又叫折半查找,要求待查找的序列有序。每次取中间位置与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程。直到查找到了为止。否则序列中没有待查的关键字。
Java 代码实现如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public static int biSearch(int []array, int a){ int lo = 0; int hi = array.length - 1; int mid; while(lo<=hi){ mid=(lo+li)/2; if(array[mid]==a){ return mid + 1; }else if(array[mid]<a){ lo = mid + 1; }else { hi = mid - 1; } } return -1; }
|