折半查詢(二分查詢)

2021-08-18 23:19:17 字數 767 閱讀 2270

折半查詢(又稱二分查詢)

簡單的理解就是整形有序的陣列中,在查詢過程中把要查詢的與陣列最中間的數進行比較以次迴圈進行查詢,找到了返回下標,找不到返回 - 1。

#include < stdio.h >

#include < stdlib.h>

//折半查詢函式

int binary_search(int arr, int key, int line)

//確定的陣列長度需要以傳參的形式傳給函式,陣列的長度不能在函式內部進行計算,

//陣列傳參過程是以指標形式進行傳址的

else

if (arr[mid] > key)

else

}if (left > right)

return -1;//找不到返回-1

}int main()

; int key = 100;//要查詢的數

int line = sizeof (arr) / sizeof(arr[0]);//確定陣列長度

int ret = binary_search(arr, key, line); //折半查詢函式

if (ret == -1)

else

system("pause");

return

0;}

程式輸出結果:

二分查詢(折半查詢)

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

折半查詢(二分查詢)

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

二分查詢(折半查詢)

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