1. 程式人生 > >資料結構:二分查詢與二叉樹

資料結構:二分查詢與二叉樹

  • 關於二分查詢,原理其實不難,而且java Arrays類裡面有一個sorts()方法,可以先對資料進行排序,然後呼叫binarySerarch()方法,這個方法就是進行二分查詢用的。
  • 下面是JDK的原始碼:
 private static int binarySearch0(long[] a, int fromIndex, int toIndex,
                                     long key) {
        int low = fromIndex;
        int high = toIndex - 1
; while (low <= high) { int mid = (low + high) >>> 1; long midVal = a[mid]; if (midVal < key) low = mid + 1; else if (midVal > key) high = mid - 1; else return mid; // key found
} return -(low + 1); // key not found. }
  • 說下原理:一個有序陣列,需要查詢某一個數組中某一個值,二分查詢就就是先按照陣列下標加一,然後除以二,之後向下取餘。也就是陣列{2,3,4}按照下標算toIndex 最大是二,(2+1)/2 = 1…1直接取1,陣列下標為一的數是3。然後我們拿到這個中值a,如果我們要查的值比a這個值小,這時a就變成最大值,再按照上述方式進行迴圈查詢。