哈喽,很高兴见到大家,这次是用java语言写的折半查找法,实际上,
小白通过对比C语言里的二分法,小白发现,这两种办法的原理相同。
可以参考高中学的查找零点的办法。
import java.util.Scanner;
public class 折半法查找 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner reader=new Scanner(System.in);
int n=0;
System.out.println("请输入数组的长度:");
n=reader.nextInt();
int a[]=new int[n];
int i=0,j=0,t=0;
System.out.println("输入数组元素:");
for(i=0;i<n;i++){ /*这一部分是输入数组元素*/
a[i]=reader.nextInt();
}
for(i=0;i<n-1;i++){ /*这一部分是冒泡排序*/
for(j=0;j<n-i-1;j++){
if(a[j]>a[j+1]){
t=a[j+1];
a[j+1]=a[j];
a[j]=t;
}
}
}
System.out.println("请输入要查找的数:");
int x=reader.nextInt();
int mid=0,low=0,high=n; /*low是数组的左下标,high是数组的右下标,mid是它们的中间值*/
mid=(high+low)/2;
while(x!=a[mid]) {
if(x<a[mid]) {
high=mid-1;
mid=(low+high)/2;
}
else if(x>a[mid]) {
low=mid+1;
mid=(low+high)/2;
}
if(low==mid)
break;
}
if(x==a[mid]) {
System.out.println("存在该数:"+x+"该数在数组里的位置:"+mid);
}
else if(x==a[high]) {
System.out.println("存在该数:"+x+"该数在数组里的位置:"+high);
}
else
System.out.println("数组里不存在该数");
}
}
来看一下下面这个例子
小白很希望大家留言,期待下次见面,再见。