C語言二分查詢 在有序陣列中查詢目標數字

2021-10-04 23:06:09 字數 747 閱讀 6480

二分查詢(binary search) 也叫折半查詢, 是一種效率較高的查詢方法

前提條件是被查詢的元素首先要有序排列

找到了返回陣列下標, 找不到返回-1

#include

intsearch

(int

* a,

int n,

int target)

else

if(a[mid]

< target)

else

return mid;

}return-1

;}intmain()

;//有序陣列

int size =

sizeof

(a)/

sizeof

(a[0])

;//求陣列元素個數

int num =6;

//查詢數字6

//int num = 1 //查詢數字1

int ret =

search

(a, size, num);if

(ret ==-1

)printf

("沒有找到...\n");

else

printf

("找到了,下標是%d\n"

, ret)

;return0;

}

執行結果截圖:

目標數字是6時

目標數字是1時

二分查詢有序陣列

對於乙個有序字串陣列,用二分法查詢某一字串是否存在於該字串陣列中。函式原型為 bool binarysearch const vector array,const string target 注意這裡的有序指的是字典序,如字串陣列 a,ab,ac,bc,cd,d 就是有序字串陣列,而 a,b,ab ...

有序陣列中的二分查詢

最近看一些演算法題發現這些問題到最後落實到實現上都是程式設計基礎的體現,包括對基本的for,if,else,while等語句的理解程度,還有對迴圈遞迴的理解。所以還是得回歸最基本的演算法,現在去學習那些高深複雜的dp,kmp,紅黑樹未免有點好高騖遠。目前應該堅持基礎,打好基礎,畢竟不是cs科班出身。...

二分查詢(基於有序陣列)

採用一對平行的陣列,乙個儲存鍵乙個儲存值 實現的核心是rank 方法,它返回表中小於給定鍵的鍵的數量。二分查詢法 將被查詢的鍵和子陣列的中間鍵比較。如果被查詢的鍵小於中間鍵,就在左子陣列中繼續查詢,如果大於就在右子陣列中繼續查詢,否則中間鍵就是我們要找的鍵。實現 rank 採用了二分查詢法,rank...