二分排序前提就是,假设数组是有序的,从小到大排好的。
首先将给定value,与字典中间位置上元素比较,如果相等,则检索成功;
否则,若value比中间值小,则在字典前半部分中继续进行二分法检索;
若value大,则在字典后半部分中继续进行二分法检索。
如果没有找到就返回-1。这是一种效率比较高的查找方法。
下面是二分排序的代码
public static int binarySearch(int[] array, int value)
{
// TODO Auto-generated method stub
//二分查找的前提是,数组是有序的
int low = 0;
int high = array.length-1;
int middle;
while(low <= high)
{
middle = (low + high)/2;
if(value == array[middle])
{
return middle;
}
if(value < array[middle])
{
return high = middle-1;
}
if(value > array[middle])
{
return low = middle+1;
}
return -1;//表示没找到
}
}