二分查找表一定要有序
下面是具体实现代码
import java.util.*;
public class search {
//顺序查找
public static int seqsearch(int[]a,int keytype){
if(a.length>0){
for(int i=0;i<a.length;i++){
if(a[i]==keytype) //若查找成功,则返回元素下标i
return i;
}
}
return -1; //若查找不成功,返回-1;
}
//二分查找,查找表必须有序
public static int binarysearch(int[]a,int keytype){
if(a.length>0){
int low=0,high=a.length-1; //查找范围的上界和下界
while(low<=high){
int mid=(low+high)/2; //中间位置,当前比较的数据元素位置
if(a[mid]==keytype) //若查找成功,返回元素下标mid
return mid;
else if(a[mid]<keytype) //中间元素比给定值小
low=mid+1; //查找范围缩小到后半段
else //中间元素比给定值大
high=mid-1; //查找范围缩小到前半段
}
}
return -1; //查找不成功,