题目要求:
1.从键盘中输入十个数字,用数组保存。
2.按键盘输入顺序输出。
3.按输入的反向顺序输出。
4.按冒泡算法从小到大按顺序输出。
5.计算最大值、最小值、平均值。
6.使用折半查找随机输入一个值,当这个值在数组中时,输出该值的下标。
代码如下:
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
int[] num = new int[10];
int i, j, temp, max, min, avg, sum = 0;// temp:临时辅助变量,i,j循环变量,max:最大值,min:最小值
// avg:平均值 sum:求和
int startpos = 0, endpos = num.length;// startpos:开始游标,endpos:结束游标
int mid;// 中间游标
boolean find = false;
Scanner sc = new Scanner(System.in);// new一个输入流
// 循环键盘接受10个数据
System.out.println("请键盘输入十个整数");
for (i = 0; i < 10; i++) {
num[i] = sc.nextInt();
}
// 按输入顺序输出
System.out.println("按输入顺序输出结果如下:");
for (i = 0; i < 10; i++) {
sum = sum + num[i];
System.out.print(num[i] + " ");
}
System.out.println("");
// 按照输入的反向顺序输出
System.out.println("按照输入的反向顺序输出结果如下:");
for (i = 9; i >= 0; i--) {
System.out.print(num[i] + " ");
}
System.out.println("");
// 从小到大冒泡算法排序
System.out.println("根据冒泡排序输出结果如下:");
for (i = 0; i < 10; i++)
for (j = i + 1; j < 10; j++) {
{
if (num[i] > num[j]) {
temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
}
// 从小到大冒泡排序后输出:
for (i = 0; i < 9; i++) {
System.out.print(num[i] + "<");
}
System.out.println(num[9]);
// 最大值输出
System.out.println("输入的十个数据中最大值为:" + num[0]);
// 最小值输出
System.out.println("输入的十个数据中最大值为:" + num[9]);
// 平均值输出
System.out.println("输入的十个数据中平均值为:" + sum / 10);
// 请键盘输入查找的数字
System.out.print("请键盘输入要查找的数字:");
int findnum = sc.nextInt();// 键盘接受一个整型数据
// 折半查找
i=0;
if(findnum >= num[0] && findnum <= num[9]){
while (startpos <= endpos) {
mid = (startpos + endpos) / 2;
if (findnum == num[mid]) {
System.out.println("所查找数字在该数组中的下标为:" + mid);
find = true;
break;
} else if (findnum > num[mid]) {
startpos = mid;
} else if (findnum < num[mid]) {
endpos = mid - 1;
}
i++;
if(i>=10)break;
}
}
if(!find)
System.out.println("对不起,没有找到该数字!");
}
}
程序截图:
本文标题:JAVA冒泡排序和折半查找算法
本文链接:https://blog.quwenai.cn/post/3052.html
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。







还没有评论,来说两句吧...