“二分查找”的版本间的差异
		
		
		
		
		
		跳到导航
		跳到搜索
		
				
		
		
	
| Jihongchang(讨论 | 贡献)  (建立内容为“<syntaxhighlight lang="java"> public class BinarySearch {      public static int rank(int key, int[] a) {         //数组必须是有序的         int lo = 0;…”的新页面) | Jihongchang(讨论 | 贡献)  | ||
| 第2行: | 第2行: | ||
| public class BinarySearch { | public class BinarySearch { | ||
| − |      public static int rank(int key, int[] a) { | + |      public static int rank(int key, int[] a) {2 | 
|          //数组必须是有序的 |          //数组必须是有序的 | ||
|          int lo = 0; |          int lo = 0; | ||
2024年11月14日 (四) 08:54的版本
public class BinarySearch {
    public static int rank(int key, int[] a) {2
        //数组必须是有序的
        int lo = 0;
        int hi = a.length - 1;
        while (lo <= hi) {
            //被查找的键要么不存在,要么必然存在于a[lo...hi]之中
            int mid = lo + (hi - lo) /2;
            if (key < a[mid]) {
                hi = mid - 1; //-1:从候选中过滤掉已经判断过的元素
            } else if (key > a[mid]) {
                lo = mid + 1; //+1:从候选中过滤掉已经判断过的元素
            } else {
                return mid;
            }
        }
        return -1;
    }
}