二分查詢(折半查詢)

2022-08-25 19:09:34 字數 633 閱讀 8176

二分查詢

二分查詢也叫折半查詢。要求這個序列是有序序列。

二分查詢的時間複雜度為o(logn),比順序查詢要快一些,比具體步驟如下:

1:找到序列的中點,比較目標數與序列中點對應的數的大小。

2:目標數大於序列中點對應的數,序列的起點變為原序列的中點加1一;

目標數小於序列中點對應的數,序列的終點變為原序列的中點減一。

目標數等於序列中點對應的數,返回該數在序列中對應的下標。

3:重複步驟1,2直到找到目標數或者該序列中沒有該數時結束。

int binsearch(int r,int k)//

r為有序表,k為要查詢的目標數

return0;

//當low>high時表示查詢區間為空,查詢失敗

}

如果該序列無序,可用sort函式進行快排。二分查詢比順序查詢要快,但是也是有缺點的,

就是二分查詢需要將序列排序,序列如果是無序的那麼就需要將序列排序,而排序本身就

是比較費時,即使用高效率的排序演算法也要花費o(nlogn)的時間。

所以我們要採用二分查詢時我們就要考慮這個序列是否是經常改動,

如果這個序列的不能保持有序性,那麼二分查詢就不再適用。

二分查詢(折半查詢)

二分查詢 折半查詢 從有序序列中找到給出的要查詢的數字。原理是 首先把乙個有序序列中間位置的值與要查詢的數比較,若相等則找到了有序序列中的此數 否則比較兩者的大小,若前者大,則把有序序列的中間位置以前的元素都去掉,餘下的元素組成乙個新的有序數列繼續上一步的操作,直到找到為止 若後者大,則把有序數列中...

折半查詢(二分查詢)

折半查詢 又稱二分查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有 序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前...

二分查詢(折半查詢)

時間限制 3000 ms 記憶體限制 65535 kb難度 3描述 在某一國度裡流行著一種遊戲。遊戲規則為 在一堆球中,每個球上都有乙個整數編號i 0 i 100000000 編號可重複,現在說乙個隨機整數k 0 k 100000100 判斷編號為k的球是否在這堆球中 存在為 yes 否則為 no ...