任务名称
排序并查找
任务概述
对数组{1,3,9,5,6,7,15,4,8}进行排序,然后使用二分查找 6 并 输出排序后的下标
代码实现
public class Main {
public static void main(String[] args) {
int [] nums = {
1,3,9,5,6,7,15,4,8};
//对nums 数组进行排序 使用冒泡排序
//外循环循环的是轮数 nums.length-1
for(int i = 0; i<nums.length-1;i++) {
//内循环 循环是比较次数 nums.length-1-i
for(int j= 0; j<nums.length-1-i;j++) {
if(nums[j]>nums[j+1]) {
int temp= nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
//使用二分查找 6 并 输出排序后的下标
int num=6;
//定义一个最小范围数字的索引
int minIndex=nums[0];
//定义一个最大范围数字的索引
int maxIndex=nums.length-1;
//定义一个中间数字的索引
int centerIndex=(minIndex+maxIndex)/2;
while(true) {
if(nums[centerIndex]>num) {
maxIndex=centerIndex-1;
}
else if(nums[centerIndex]<num) {
minIndex=centerIndex+1;
}else{
break;
}
if(minIndex>maxIndex) {
centerIndex=-1;
break;
}
//当边界发生变化时,需要更新中间下标
centerIndex=(minIndex+maxIndex)/2;
}
//输出需要找的数的位置
System.out.println("位置在"+centerIndex);
}
}
运行结果
运行结果为:位置在4