ACM二分搜尋演算法

2022-02-02 12:10:31 字數 1186 閱讀 6683

二分搜尋演算法就是把要搜尋的資料在搜尋文字中根據情況進行折半,比如要在2 6 4 9 3 8 7 3 5中找到找到4的位置,那麼可以考慮先把資料進行排序,然後把拍好後的資料的中間的那個資料和要查詢的資料4進行比較,如果中間的資料比4大,那麼4肯定在左半邊(即最小資料到中間資料這邊),既然這樣,那又在這左半邊資料中進行同樣的操作不就可以找到4咯;聽起來就是遞迴的樣子。

用上面的例子演示一下資料是:2 6 4 9 1 8 7 3 5;要查詢的資料是4。先進行排序:1 2 3 4 5 6 7 8 9;中間的資料就是5;4<5;所以就在左半邊(即:1 2 3 4)查詢;然後左半邊的中間值就是:2,2<4;所以就在右半邊(即使是:3 4)查詢;右半邊的中間值是:3,3<4;所以又在右半邊(4)查詢;4==4;就找到了;

tips:我們先把資料存到陣列裡面,然後用快排對陣列進行排序;這個中間值的確定是這樣子的:mdi=(low+hight)/2,low和hight都是指數組的下標;

下面貼**:

我的:

#include #include 

using

namespace

std;

intmain()

int low=0,height=n;

cin>>key;

sort(s,s+n);

while(low<=height)

cout

<<"

key在陣列中的下標是:

"return0;

}

然後聽大神說還有個5行就搞定的二分搜尋法,於是就check了一下:

**:

//

二分查詢:

#include #include

using

namespace

std;

int binsearch(int* a, int begin, int end, int

k) //a是陣列,begin是陣列的開始下標,end是陣列的結束下標

intmain()

sort(s,s+t);

intkey;

cin>>key;

cout

<0,t-1,key)

}

sample:

6(資料的數量)

1 6 9 7 2 3(資料)

3(要查詢的資料)

sample output:

二分搜尋演算法

今天我勉強搞懂了二分查詢演算法,我覺得很有收穫,這是個不錯的演算法,希望還不知道 不懂二分演算法的朋友能看看!二分查詢 二分查詢的前提是陣列一定是有序的 傳入乙個陣列 t 傳入乙個查詢元素 t key 返回查詢結果 class myutil else if key.compareto x mid 0...

二分搜尋演算法

在電腦科學中,二分搜尋 英語 binary search 也稱折半搜尋 英語 half interval search 對數搜尋 英語 logarithmic search 是一 種在有序陣列中查詢某一特定元素的搜尋演算法。搜尋過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜尋過程結束...

二分搜尋演算法

1.x y 2與x y x 2區別 運算子 取整朝零方向取整,5 2 2,5 2 2 用x y x 2好處是確保分界點總是靠近區間起點 2.基本二分查詢的實現方法 int bsearch int a,int x,int y,int v return 1 3.設lower bound和upper bo...