知识大全 Java经典算法编程题目,适合面试前进行练习

Posted 元素

篇首语:一箫一剑平生意,负尽狂名十五年。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java经典算法编程题目,适合面试前进行练习相关的知识,希望对你有一定的参考价值。

Java经典算法编程题目,适合面试前进行练习  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

定义一个int型的一维数组 包含 个元素 分别赋一些随机整数 然后求出所有元素的最大值

最小值 平均值 和值 并输出出来

class ArrayNumber

public static void main(String[] args)

int[] arrayNumber;

arrayNumber = new int[ ];

System out println(&# ;以下是随机的 个整数 &# ;);

// 填入随机的 个整数

for (int i = ; i<arrayNumber length; i++)

arrayNumber[i] = (int)( *Math random());

System out print(arrayNumber[i]+&# ; &# ;);

System out println();

int max = arrayNumber[ ];

int min = arrayNumber[ ];

int sum = ;

for (int i = ; i<arrayNumber length; i++)

if(max < arrayNumber[i])

max = arrayNumber[i];? //求最大值

if(min > arrayNumber[i])

min = arrayNumber[i]; //求最小值

sum += arrayNumber[i];

System out println(&# ;其中 Max=&# ;+max+&# ; Min=&# ;+min+&# ; Sum=&# ;+sum+&# ; Avg=&# ;+sum/ );

定义一个int型的一维数组 包含 个元素 分别赋值为 ~ 然后将数组中的元素都向前移一个位置

即 a[ ]=a[ ] a[ ]=a[ ] …最后一个元素的值是原来第一个元素的值 然后输出这个数组

定义一个int型的一维数组 包含 个元素 用来存储每个学员的成绩 循环产生 个 ~ 之间的随机整数

将它们存储到一维数组中 然后统计成绩低于平均分的学员的人数 并输出出来

(选做)承上题 将这 个成绩按照从高到低的顺序输出出来

(选做)编写程序 将一个数组中的元素倒排过来 例如原数组为 则倒排后数组中的值

要求定义一个int型数组a 包含 个元素 保存 个随机的 位数 再定义一个

int型数组b 包含 个元素 统计a数组中的元素对 求余等于 的个数 保存

到b[ ]中 对 求余等于 的个数 保存到b[ ]中 ……依此类推

class Remain

public? static void main( String[] args)

int[] a = new int[ ];

//保存 个随机 位数到 a 中

for (int i = ;? i < a length;? i++)

a[i] = (int) ( *Math random());

//统计 a 数组中的元素对 求余的各个的数目

int[] b = new int[ ];

int k sum;

for (int j = ;? j < b length;? j++)

for (k= sum= ;? k < a length;? k++)

if ((a[k]% )==j) sum++;

b[j] = sum;

System out printf(&# ;b[%d]=%d\\n&# ; j b[j]);

定义一个 * 的二维数组 用来存储某班级 位学员的 门课的成绩 这 门课

按存储顺序依次为 core C++ coreJava Servlet JSP和EJB

( )循环给二维数组的每一个元素赋 ~ 之间的随机整数

( )按照列表的方式输出这些学员的每门课程的成绩

( )要求编写程序求每个学员的总分 将其保留在另外一个一维数组中

( )要求编写程序求所有学员的某门课程的平均分

class Student

public static void main(String[] args )

int[][] mark = new int[ ][ ];

// 给学生赋分数值 随机生成

for ( int i = ;? )

//未完成

完成九宫格程序

在井字形的格局中(只能是奇数格局) 放入数字(数字由) 使每行每列以及斜角线的和都相等

经验规则 从 开始按顺序逐个填写 ? 放在第一行的中间位置 下一个数往右上角 度处填写

如果单边越界则按头尾相接地填 如果有填写冲突 则填到刚才位置的底下一格

如果有两边越界 则填到刚才位置的底下一格

个人认为 可以先把最中间的数填到九宫格的最中间位置 再按上面的规则逐个填写 而且

填的时候还可以把头尾对应的数填到对应的格子中 (第 n 个值跟倒数第 n 个值对应 格局上以最中

间格为轴心对应)

这样就可以同时填两个数 效率比之前更高 其正确性有待数学论证(但多次实验之后都没发现有错)

九宫格的 至少还可以填在另外的三个位置 只是接下来的填写顺序需要相应改变

再根据九宫格的对称性 至少可以有 种不同的填写方式

import java util Scanner;

class NinePalace

public static void main(String[] args)

// 定义 N 为九宫格的行列数 需要输入

System out println(&# ;请输入九宫格的行列规模(只能是奇数的)&# ;);

Scanner n = new Scanner(System in);

int N;

//判断格局是否奇数 (可判断出偶数 负数 及小数)

double d;

while (true)

d = n nextDouble();

N = (int)d;

if ((d N)> E ||N% == ||N< )

System out println(&# ;输入出错 格局只能是正奇数 请重新输入&# ;);

else break;

//老师的九宫格填写方法

int[][] result = new int[N][N]; //定义保存九宫格的数组

int row = ; //行 初始位置

int col = N/ ; //列 初始位置 因为列由 开始 故N/ 是中间位置

for (int i= ;? i<=N*N; i++)

result [row][col] = i;

row&# ;;

col++;

if (row< &&col>=N)col&# ;;row+= ; //行列都越界

else if (row< ) row = N ; //行越界

else if (col>=N)col = ;? //列越界

else if (result[row][col] != )col&# ;;row+= ;? //有冲突

//打印出九宫格

for (int i= ;? i<N;? i++)

for(int j= ;? j<N; j++)System out print(result[i][j]+&# ;\\t&# ;);

System out println();

//我个人的填格方式

int[][] result = new int[N][N];? //为免冲突 重新 new 一个数组

result [N/ ][N/ ] = (N*N+ )/ ;? //先把中间值赋予中间位置

row = ; //定义行及列的初始赋值位置 之前赋值的for对两个值有影响 故需重新定位

col = N/ ;

for (int i= ; i<=N*N/ ; i++)

result [row][col] = i;

//下面这句是把跟 i 对应的值放到格局对应的位置上

result [N row ][N col ] = N*N+ i;

row&# ;;

col++;

if (row< ) row = N ; //行越界

else if (col>=N)col = ;? //列越界

else if (result [row][col] != )col&# ;;row+= ;? //有冲突

//这方法不可能出现行列两边都越界的情况 详情需要数学论证

System out println();

//再次打印出九宫格 以对比验证

for (int i= ;? i<N;? i++)

for(int j= ;? j<N; j++)System out print(result [i][j]+&# ;\\t&# ;);

System out println();

求一个 * 矩阵对角线元素之和

打印杨辉三角

约梭芬杀人法

把犯人围成一圈 每次从固定位置开始算起 杀掉第 个人 直到剩下最后一个

_ 用数组实现约瑟夫出圈问题 n个人排成一圈 从第一个人开始报数 从 开始报 报到m的人出圈 剩下的人继续开始从 报数 直到所有的人都出圈为止 对于给定的n m 求出所有人的出圈顺序

判断随机整数是否是素数

产生 个 之间的随机整数 然后判断这 个随机整数哪些是素数 哪些不是?

public class PrimeTest

public static void main(String args[])

for(int i= ;i< ;i++)

int num = (int)(Math random()* );

PrimeTest t = new PrimeTest();

if(t isPrime(num))

System out println(num+&# ; 是素数!&# ;);

else

System out println(num+&# ; 不是素数!&# ;);

System out println();

public boolean isPrime(int num)

for(int i= ;i<=num/ ;i++)

if(num%i== )

System out println(num+&# ;第一个被&# ;+i+&# ;整除!&# ;);

return false;

return true;

冒泡排序法

//按从大到小的排序

int tmp = a[ ];

for (int i= ; i < a length; i++)

for (int j= ; j < a length &# ; i ; j++)

if (a[j] < a[j+ ])

tmp = a[j];

a[j] = a[j+ ];

a[j+ ] = tmp;

cha138/Article/program/sjjg/201405/30746

相关参考