折半法判断数据是否存在无序数组中
JAVA 2实用教程(第5版)page 29
import java.util.*;//引用类库
public class Selec {
/*在无序数据中查看一个数据是否在这堆数据中*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[]= {12,45,67,89,123,-45,67};
//类库自带的排序
//Arrays.sort(a);
//选择排序
int N=0;
for(int i=0;i<N;i++) {
for(int j=i+1;j<N;j++) {
if(a[j]<a[i]) {
int t=a[j];
a[j]=a[i];
a[i]=t;
}
}
}
int low=0;//定义了三个指针
int high=a.length-1;//a.length作用是查看一维数组长度并
int mid=(low+high)/2;
System.out.print("输入整数,程序判断该整数是否在数组中:\t");
Scanner scanner = new Scanner(System.in);//接收用户键盘输入
int n=scanner.nextInt();
boolean flag=false;//默认没有这个数
while(low<=high) {
if(n==a[mid]) {
flag=true;
break;
}
else if(n>a[mid]) {
low=mid+1;
mid=(low+high)/2;
}
else {
high=mid-1;
mid=(low+high)/2;
}
}
if(flag) {
System.out.println(n+"在数组中");
}
else {
System.out.println(n+"不在数组中");
}
}
}