java中对数组中某个元素的下标进⾏查
⼆分查法
概述
⼆分查也称折半查(Binary Search),它是⼀种效率较⾼的查⽅法。但是,⼆分查要求数组数据必须采⽤顺 序存储结构有序排列。
原理
⾸先,假设数组中元素是按升序排列,将数组中间位置的数据与查数据⽐较,如果两者相等,则查成功;否则利⽤中间位置记录将数组分成前、后两个⼦数组,如果中间位置数据⼤于查数据,则进⼀步查前⼦数组,否则进⼀步查后⼦数组。重复以上过程,直到到满⾜条件的数据,则表⽰查成功,直到⼦数组不存在为⽌,表⽰查不成功。
Scanner scan =new Scanner(System.in);
int[] nums =new int[9];
//初始化数组,随机100以内的数
for(int i =0; i < nums.length; i++){
nums[i]=(int)(Math.random()*100);
}
System.out.println("初始数组为:");
for(int i : nums){
System.out.print(i+"\t");
}
//⼆分查需要⼀个有顺序的数组,所以对初始化的数组进⾏排序
java中index是什么意思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;
}
}
}
System.out.println("\n排序后数组为:");
for(int i =0; i < nums.length; i++){
System.out.print(nums[i]+"\t");
}
//⼆分查
/
/最⼩下标
int minIndex=0;
//最⼤下标
int maxIndex=nums.length-1;
//中间下标
int centerIndex=(minIndex+maxIndex)/2;
//查元素
System.out.print("\n请输⼊需要查的元素:");
int Int();
while(true){
if(nums[centerIndex]>findNum){
/
/当查⽬标⼩于中间值时,此时⽬标值在左边,此时最⼤下标为中间下标-1  maxIndex=centerIndex-1;
}else if(nums[centerIndex]<findNum){
//当查⽬标⼤于中间值时,此时⽬标值在右边,此时最⼩下标为中间下标+1  minIndex=centerIndex+1;
}else{
System.out.println("查元素"+findNum+"的下标为:"+centerIndex); break;
}
if(minIndex>maxIndex){
//当最⼩下标⼤于最⼤下标时,说明不到⽬标值
System.out.println("查元素的下标不存在");
break;
}
//每次查后边界都会发⽣变化,所以就重新更新中间下标
centerIndex=(minIndex+maxIndex)/2;
}
// 关闭扫描,释放资源
scan.close();
效果图

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。