题目
对数组{1,3,9,5,6,7,15,4,8}进行排序,然后使用二分查找 6 并
输出排序后的下标
解
提示:冒泡排序的循环中,外层循环每循环一次有一个最大数被放到数组最后,内层循环为需要比较的次数。二分查找只适用于排序好的数组,并且只适用于找一个值的情况,结束条件是下界大于上界。
public class Task2_4 {
public static void main(String[] args) {
int[] nums = {1, 3, 9, 5, 6, 7, 15, 4, 8};
//冒泡法排序
int t;
for(int i=0; i<nums.length-1; i++) {
for(int j=0; j<nums.length-1-i; j++) {
if(nums[j] > nums[j+1]) {
t = nums[j];
nums[j] = nums[j+1];
nums[j+1] = t;
}
}
}
System.out.println("升序排列好的数组为:");
for(int i=0; i<nums.length; i++) {
System.out.print(nums[i] + " ");
}
System.out.println();
//二分查找
int maxIndex = 0; //上界
int minIndex = 8; //下界
int middleIndex = (maxIndex+minIndex) / 2; //中间点
while(true){
if(nums[middleIndex] > 6) { //6在左边
maxIndex = middleIndex - 1;
}else if(nums[middleIndex] < 6) { //6在右边
minIndex = middleIndex + 1;
}else {
System.out.println("利用二分法查找");
System.out.println("6在下标为" + middleIndex + "的位置");
break;
}
if(minIndex>maxIndex) {
System.out.println("您要找的值不存在");
}
}
}
}