Ruby實現二分搜尋 二分查詢 演算法的簡單示例

2022-09-26 05:09:11 字數 830 閱讀 7368

在電腦科學中,二分搜尋(英語:binary search),也稱折半搜尋(英語:half-interval search)、對數搜尋(英語:logarithmic sea程式設計客棧rch),是一種在有序陣列中查詢某一特定元素的搜尋演算法。搜尋過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜尋過程結束;如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一樣從中程式設計客棧間元素開始比較。如果在某一步驟陣列為空,則代表找不到。這種搜尋演算法每一次比較都使搜尋範圍縮小一半。

複雜度分析

時間複雜度:

折半搜尋每次把搜尋區域減少一半,時間複雜度為

。(n代表集合中元素的個數)

www.cppcns.com空間複雜度:

雖以遞迴形式定義,但是尾遞迴,可改寫為迴圈。

ruby**示例

def binsea i)

low, high = 0, arr.size - 1

while (low < high)

mid = (low + high)/2

if arr[mid] < i

l程式設計客棧ow = mid + 1

elsif arr[mid] > i

high = mid - 1

else

return mid

endend

endarr = [1,3,12,34,35,46,91,108]

puts binseaech(arr, 91)

結果:6

[finished in 0.1s]

本文標題: ruby實現二分搜尋(二分查詢)演算法的簡單示例

本文位址:

Java 二分搜尋 二分查詢

對陣列元素進行逐個查詢顯然是費時費力的工作,我們可以使用一些方法快速地搜尋出陣列中元素的指定位置.接下來我們介紹一種方法 二分搜尋法 二分搜尋法充分利用了元素間的次序關係.基本思想 將n元素分成個數大致相同的涼拌,取arr n 2 與欲查詢的x做比較,如果 下面將採用兩種方式 遞迴 非遞迴 來展示二...

關於二分查詢和二分搜尋

首先是二分查詢,舉個有序的整數陣列例子 二分查詢和搜尋都是針對有序陣列 public int rank int key,int n else if cmp 0 else return lo 如果查詢到,返回陣列下標mid,如果沒找到,return lo 有人會問了為什麼返回lo?當然你非要在找不到的...

二分搜尋與STL二分查詢

用法 搜尋非遞減數列中是否包含某個元素 當資料量比較大的時候,二分比線性搜尋高效得多。流程 查詢36 實現 物件是非遞減序列,如果當資料無序時,需要預先進行一次排序。int binarysearch int a,int key,int n n為陣列長度 rerurn 0 陣列a中不存在key 複雜度...