資料結構:二分查詢與二叉樹
阿新 • • 發佈:2018-12-15
- 關於二分查詢,原理其實不難,而且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就變成最大值,再按照上述方式進行迴圈查詢。
- 簡述一下二叉樹的原理:陣列拿出一個數作為根節點,把比這個數小的放在左子樹上,然後把比這個數打的放在右子樹上。以此類推。