二分查詢(折半查詢)的遞迴和非遞迴實現(c )

2021-10-08 02:28:38 字數 1077 閱讀 9761

1.首先確定整個查詢區間的中間位置 mid = start+(end-start)/2。

2使用待查關鍵字key值與中間位置的關鍵字值進行比較。

3 若相等,則查詢成功

若大於,則在後(右)半個區域繼續進行折半查詢

若小於,則在前(左)半個區域繼續進行折半查詢

4 對確定的縮小區域再按折半公式,重複上述步驟。

int

bin_search1

(int key,

int arr,

int length)

else

if(arr[mid]

else

}return-1

;}

int

binary_search2

(int key,

int arr,

int start,

int endend)

if(start>=endend)

else

if(key>arr[mid]

)else

if(key

)return-1

;}

int

main()

;int arr_length =

sizeof

(arr)

/sizeof

(arr[0]

);cout<

int resultpos =

bin_search1(18

,arr,arr_length)

;int respos =

binary_search2(12

,arr,

0,arr_length)

; cout<<

"18的位置"

<

cout<<

"12的位置"

牛客題目(答案暫時麼有整理)

二分查詢 遞迴和非遞迴

二分查詢要求 資料儲存在順序儲存結構中 數字有序排放 原理 將陣列分為三部分,依次是左值,中值,右值 將要查詢的值和陣列的中值進行比較,若小於中值則在中值前 面找,若大於中值則在中值後面找,等於中值時直接返回。然後依次是乙個遞迴過程,將前半部分或者後半部分繼續分解為三部分。迴圈實現二分查詢 temp...

二分查詢(遞迴 非遞迴)

二分查詢是一種查詢效率非常高的查詢演算法。又稱折半查詢。起初在資料結構中學習遞迴時實現二分查詢,實際上不用遞迴也可以實現,畢竟遞迴是需要開闢額外的空間的來輔助查詢。本文就介紹兩種方法 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。使用條件 查詢序...

遞迴和非遞迴的二分查詢

思路很簡單,注釋已標註 include 遞迴二分查詢 int binarysearch int start,int end,intfinddata int mid start end start 2 根據中間值不斷二分縮小待查元素所在範圍 if finddata mid else if findda...