知识大全 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相关参考
知识大全 java web开发 有哪些经典的开原始码,适合初学者来读和学习
javaweb开发有哪些经典的开原始码,适合初学者来读和学习?初学者没必要总找什么经典程式码看,初学任务是掌握基本语法,多做练习,掌握基础给你经典程式码,你也看不出他经典在哪里就像一个不会开车的人让他
JAVA编程语言开发DES算法理论 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! [java]
有什么适合初中生看的电脑编程的电脑书?建议先看看vb,这样你就先来了解编程是怎么回事,看完后再看C语言(谭浩强版本的C语言很经典的),这些都是基础,要仔细揣摩加上机练习。后来再看一些高级语言类的,记住
给一颗二叉树每个节点都有左孩子指针和右孩子指针(当然可能为空)要求给每个节点添加一个指针这个指针要指向它的同一层的紧临的兄弟(要求写代码)给一个单链表将其反转(要求写代码)写一个函数传入一个字符串判断
IBM经典面试题用.NET编程解答 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 村子里有50个
c#.Net史上经典面试题目 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 共个问题 简述pr
33条C#、.Net经典面试题目及答案 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本文集中了
面试笔试必用-必须掌握的Java排序算法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Java排序
英文的行为面试访谈问题,每个题目往往都包含着一个主要的考查意图,比如说,有的题目考查的是创新能力,有的题目考查的是团队精神,而有的则考查的是领导能力。这些考查意图会非常明显地在题目本身的KeyWord
Java综合技术面试题目–Spring篇 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Spring