二分查詢法作為一種常見的查詢方法,將原本是線性時間提公升到了對數時間範圍,大大縮短了搜尋時間,但它有乙個前提,就是必須在有序資料中進行查詢。
二分查詢過程如下:
1. 將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;
2. 否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表;
3. 否則進一步查詢後一子表。
4. 重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。
int binary(int arr, int data,int length) else if (arr[mid] < data) else
}return -1;
}
資料結構與演算法之二分查詢
二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其 缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的 關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置 記錄將表分成...
資料結構與演算法之二分查詢
假設我們有1000萬個整數資料,每個資料佔8個位元組,如何設計資料結構和演算法,快速判斷某個整數是否出現在這1000萬資料中?我們希望這個功能不要占用太多的記憶體空間,最多不要超過100m,你會怎麼做?二分查詢時一種非常簡單易懂的快速查詢演算法,生活中到處可見。比如說,我們現在來做乙個猜字遊戲。我隨...
資料結構與演算法之二分查詢法
public static void main string args 目標元素 int target 9 目標元素的索引 int index 1 記錄開始位置 int begin 0 記錄結束位置 int end arr.length 記錄中間位置 int mid begin end 2 迴圈查詢...