Java数组训练
1.冒泡排序
public class Demo1 {
public static void main(String[] args) {
int[]num = {21,10,54,58,24,33,100};
int a;
//冒泡排序
//外层循环控制执行次数
//执行次数=length-1
for(int i=0;i<num.length-1;i++){
//内层循环控制比较次数
//比较次数=length-i-1(循环轮数)
for(int j=0;j<num.length-i-1;j++) {
//比较交换位置
if(num[j]>num[j+1]) {
a = num[j+1];
num[j+1]=num[j];
num[j]=a;
}
}
}
//遍历数组并输出
for(int index=0;index<num.length;index++) {
//index: 0 1 2 3 4
System.out.println(num[index]);
}
System.out.println();
}
}
2.二分查找
public class Demo2 {
public static void main(String[] args) {
//二分法查找
int[]num = {10,12,14,15,16,18,20};
//要查找的数
int a = 20;
//最小下标范围
int minindex = 0;
//最大下标范围
int maxindex = num.length-1;
//中间下标范围
int midindex = (minindex + maxindex)/2;
int i=0;
//用while循环
while(true) {
i++;
//查找值大于中间值,最小下标右移
if(a>num[midindex]) {
minindex = midindex+1;
}
//查找值小于中间值,最大下标左移
else if(a<num[midindex]) {
maxindex = midindex-1;
}
//查找值等于中间值退出循环
else {
break;
}
//找不到输入数据时输出-1
if(minindex>maxindex) {
midindex = -1;
break;
}
//当边界发生变化, 需要更新中间下标
midindex = (maxindex + minindex)/2;
}
//循环次数统计
System.out.println("循环次数:"+i);
System.out.println(midindex);
}
}