您的位置:首页 > 其它

折半查找的两种写法

2015-12-01 07:46 274 查看
//折半查找要求数组必须有序
//折半查找还可以应用于想一个有序数组中插入一个元素,原数组还有序
//可以先查找出要插入的位置下标,然后插入,该元素后的所有元素全部平行后移一个位置
class Find {
public static void main(String[] args) {
int []array={2,4,6,0,6,9};
//		Arrays.sort(array);

int key = 4;
int index = binSearch(array,key);
if(index!=-1)
System.out.println(index);
else
System.out.println("查找不到!");
}

public static int binSearch(int []array,int key){
int start=0;
int end = array.length-1;
int mid = (start+end)/2;
/*写法一:
while(array[mid]!=key){
if(array[mid]>key)
end=mid-1;
else if(array[mid]>key)
start=mid+1;

if(start>end)
return -1;
mid = (start+end)/2;
}
return mid;
*/

while(start<=end){
mid = (start+end)>>1;//相当于mid = (start+end)/2
if(key>array[mid])
start=mid+1;
else if(key<array[mid])
end=mid-1;
else
return mid;
}
return -1;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: