排序并查找 对数组{1,3,9,5,6,7,15,4,8}进行排序,然后使用二分查找6并 输出排序后的下标。
public class Demo11 {
public static void main(String[] args) {
int[] nums = {1,3,9,5,6,7,15,4,8};
int temp;
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]) {
temp=nums[j];//小的数字在前,大的数字在后
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
for(int i=0;i<nums.length;i++){//遍历数组
System.out.print(nums[i]);
}
System.out.println();
//二分查找
int num = 6;//要查找的数据
int minIndex = 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;
}
centerIndex = (minIndex+maxIndex)/2;//更新中间下标
}
System.out.println("排序后的下标为"+centerIndex);
}
}
int[] nums = {1,3,9,5,6,7,15,4,8};
int temp;
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]) {
temp=nums[j];//小的数字在前,大的数字在后
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
for(int i=0;i<nums.length;i++){//遍历数组
System.out.print(nums[i]);
}
System.out.println();
//二分查找
int num = 6;//要查找的数据
int minIndex = 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;
}
centerIndex = (minIndex+maxIndex)/2;//更新中间下标
}
System.out.println("排序后的下标为"+centerIndex);
}
}