二分查詢法 floor和ceil函式實現 C

2021-10-05 13:28:41 字數 1171 閱讀 2671

有時候我們用二分查詢法找的不是乙個元素而是一段區域。這時候我們就可以設計floor(地板)ceil(天花板)函式,找到相應區域的起始位置和結束位置。

對所給資料進行二分直到l == r,表示找到比target小的最大元素或比target大的最小元素的位置。具體實現如下:

#include

using

namespace std;

template

<

typename t>

intfloor

(t arr,

int n, t target)

if(l+

1< n && arr[l+1]

== target)

return l+1;

else

return l;

}template

<

typename t>

intceil

(t arr,

int n, t target)

if(r-

1>=

0&& arr[r-1]

== target)

return r-1;

else

return r;

}int

main

(int argc,

char

const

*ar**)

; cout <<

"the floor index is :"

<<

floor

(arr,10,

5)<< endl;

cout <<

"the ceil index is :"

<<

ceil

(arr,10,

5)<< endl;

return0;

}

執行結果

the floor index is :

4the ceil index is :

6

順序查詢法和二分查詢法

方法1 def shunxu f list,temp for index,i in enumerate f list if i temp return index return none方法2 def shunxu f flist,temp for i in range len f flist if...

二分查詢法

二分查詢要求 1.必須採用順序儲存結構 2.必須按關鍵字大小有序排列。優缺點 折半查詢法的優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。演算法思想 首先,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者...

二分查詢法

有序陣列中的find 方法 public int find long serchkey int lowerbound 0 int upperbound nelems 1 while true curin lowerbound upperbound 2 if a curin serchkey retu...