二分查詢演算法的幾種實現

2021-08-30 21:45:39 字數 1827 閱讀 9265

template

<

typename t>

intbinary_search

(const vector

&set,

const t &value)

return-1

;}

template

<

typename forwardit,

class

t>

bool

binary_search

(forwardit frist, forwardit last,

const t &value)

/*  1.查詢第乙個值等於給定值的元素

[1,3,4,5,6,8,8,8,11,18]

找到返回下標,找不到返回 -1 */

template

<

typename forwardit,

class

t>

intbinary_search

(forwardit low, forwardit high,

const t &value)

mid = low +

((high - low)

>>1)

;}return-1

;}

例題:統計乙個數字在排序陣列中出現的次數。

class

solution

else

if(data[mid]

< k)

low = mid +1;

else

high = mid -1;

mid = low +

((high - low)

>>1)

;}return-1

;}intgetnumberofk

(vector<

int> data,

int k)

return res +1;

}};

同上
/*3.查詢第乙個大於等於給定值的元素

[1,3,4,5,6,8,8,8,11,18]

找到返回下標,找不到返回 -1

*/template

<

typename forwardit,

class

t>

intbinary_search

(forwardit low, forwardit high,

const t &value)

mid = low +

((high - low)

>>1)

;}return-1

;}

/*4. 查詢最後乙個小於等於給定值的元素

[1,3,4,5,6,8,8,8,11,18]

找到返回下標,找不到返回 -1

*/template

<

typename forwardit,

class

t>

intbinary_search

(forwardit low, forwardit high,

const t &value)

elseif(

*mid > value)

high = mid -1;

mid = low +

((high - low)

>>1)

;}return-1

;}

二分查詢演算法實現

include include using namespace std define n 20 int binary chop int a,int n,int j,int k 找到即返回下標 else if a mid k high mid 1 尋找的值小於中間值,則在左邊一般查詢 else low...

查詢演算法 二分查詢python實現

二分查詢 時間複雜度為o logn 空間複雜度為o 1 二分查詢也叫做折半查詢,是一種在有序陣列中查詢某一特定元素的查詢演算法。查詢過程從中間元素開始。如果中間元素正好是要查詢的元素,則查詢過程結束。def binary search1 arr,value binary search1 尋找與val...

二分查詢演算法java實現

1 演算法概念。二分查詢演算法也稱為折半搜尋 二分搜尋,是一種在有序陣列中查詢某一特定元素的搜尋演算法。請注意這種演算法是建立在有序陣列基礎上的。2 演算法思想。搜素過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜素過程結束 如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間...