2021-04-03 流程控制的逻辑训练任务 4
对数组{1,3,9,5,6,7,15,4,8}进行排序,然后使用二分查找元素 6 并输出排序后的下标。
代码如下:
public class Class5_4 {
public static void main(String[] args) {
//定义查找目标
int target = 6;
//定义数组
int[] nums = {1,3,9,5,6,7,15,4};
//调用排序方法
sort(nums);
//调用二分查找法
find(nums,target);
}
//定义冒泡排序算法
public static void sort(int[] nums){
//第一层循环,循环数组长度-1轮
for(int i = 0;i<nums.length-1;i++){
//第二层循环
for(int j = 0;j<nums.length-i-1;j++){
if(nums[j]>nums[j+1]){
int temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
}
//定义二分查找算法
public static void find(int[] nums,int target){
int minIndex = 0;//最小下标
int maxIndex = nums.length-1;//最大下标
int centerIndex = (minIndex+maxIndex)/2;//中间下标
while(true){
if(target < nums[centerIndex]){
//目标在中间下标的左边
maxIndex = centerIndex-1;//移动最大下标
}else if(target > nums[centerIndex]){
//目标在中间下标的右边
minIndex = centerIndex+1;//移动最小下标
}else{
//target == nums[centerIndex] 找到目标元素
System.out.println("元素 "+ target + " 的下标是: " + centerIndex);
break;
}
centerIndex = (minIndex+maxIndex)/2;//重新计算中间下标值
if(minIndex>maxIndex){
System.out.println(target+" 元素不存在");
break;
}
}
}
}
运行结果: