Java基础的一种方法折半查找:
代码思路:定义一个数组,数组中有21个数字,其中有一个数需要把他找出来,就在这21个数字里,通过折半查找可以快速找到这个数字,如果找不到返回输出。
代码实现过程:
public class 折半查找 { //我的类名称,你们可以随便定义
public static void main(String[] args) {
int [] arr=new int[21];//定义一个数组有21位
for(int i=1;i<arr.length;i++) {
int r=(int)(Math.random()*100);
arr[i]=r;
}
arr[0]=33;
for(int i=1;i<arr.length;i++) {
for(int k=0;k<arr.length-i;k++) {
if(arr[k]>arr[k+1]) {
int tmp=arr[k];
arr[k]=arr[k+1];
arr[k+1]=tmp;
}
}
}
for(int tmp:arr)
System.out.print(tmp+" ");
System.out.println();
int target = 33;
int pos=-1;
int m1=0;
int m2=arr.length-1;
boolean flag=false;
while(m1<=m2) {
pos=(m1+m2)/2;
if(arr[pos]>target) {
m2=pos-1;
}
else if(arr[pos]<target) {
m1=pos+1;
}
else {
flag=true;
break;
}
}
if(flag)
System.out.println(pos+"::"+arr[pos]);
else
System.out.println("找不到");//在这21个数字里找不到我所定义的这个数,返回输出
}
}
代码运行结果:
可以看到我定义了一个33的数字,在他的查找中是第七个数字则返回7:33的数字。
代码解释完毕