二分查詢的實現和使用標準庫函式實現二分查詢

2021-06-16 21:51:19 字數 2113 閱讀 3242

二分查詢的實現和使用標準庫函式實現二分查詢

演算法思想:1、將陣列排序(從小到大);2、每次跟中間的數mid比較,如果相等可以直接返回,

如果比mid大則繼續查詢大的一邊,否則繼續查詢小的一邊。

輸入:排序好的陣列 - arrayname,陣列大小 - array_size,查詢的值 - searchnumber

返回:找到返回其在陣列中位置,否則返回-1

二分查詢的**實現

int binary_search(int arrayname, intarray_size, int searchnumber)

intlow = 0, high = array_size - 1, mid;

while(low <= high)

mid= (low + high) / 2;//獲取中間的位置

if(arrayname[mid] == searchnumber)               

returnmid;     //找到則返回相應的位置

if(arrayname[mid] > searchnumber)                 

high= mid - 1;      //如果比key大,則往低的位置查詢

else

low= mid + 1;       //如果比key小,則往高的位置查詢

return-1;

**示例:

(1)      將未排序陣列排序

(2)      二分查詢想查詢的數字

(3)      顯示查詢結果

#include

#include

using namespace std;

int binary_search1(int arrayname, intarray_size, int searchnumber)

intlow = 0, high = array_size - 1, mid;

while(low <= high)

mid= (low + high) / 2;//獲取中間的位置

if(arrayname[mid] == searchnumber)               

returnmid;     //找到則返回相應的位置

if(arrayname[mid] > searchnumber)                 

high= mid - 1;      //如果比searchnumber大,則往低的位置查詢

else

low= mid + 1;       //如果比searchnumber小,則往高的位置查詢

return-1;

int main()

int a[10]=,i=0;

printf("未排序之前的陣列裡的每乙個元素!\n");

for( i = 0 ; i < 10 ; i++ )

coutprintf("排序之後的陣列裡的每乙個元素!\n");

for( i = 0 ; i < 10 ; i++ )

couti=binary_search1(a,10,5);

if(i)

cout<<"要查詢的數字在陣列中的位置是"cout<<"沒有該數字!"i=binary_search1(a,10,20);

if(i>0)

coutcout<<"沒有該數字!"return 0;   

用標準庫里的二分查詢函式實現二分查詢

#include

#include

using namespace std;

int main()

int a[10]=,i=0;

printf("未排序之前的陣列裡的每乙個元素!\n");

for( i = 0 ; i < 10 ; i++ )

coutprintf("排序之後的陣列裡的每乙個元素!\n");

for( i = 0 ; i < 10 ; i++ )

coutif(binary_search(a,a+10,5))

cout<<"要查詢的數字在陣列中"cout<<"沒有該數字!"if(binary_search(a,a+10,20))

coutcout<<"沒有該數字!"return 0;   

二分查詢函式的使用

二分查詢函式的使用 lower bound 和upper bound 都是利用二分查詢的方法在乙個排好序的陣列中進行查詢的。在從小到大的排序陣列中,lower bound begin,end,num 從陣列的begin位置到end 1位置二分查詢第乙個大於或等於num的數字,找到返回該數字的位址,不...

標準二分查詢模板

二分查詢作為程式設計師的一項基本技能,是面試官最常使用來考察程式設計師基本素質的演算法之一,也是解決很多查詢類題目的常用方法,它可以達到 必須有序。一般是從小到大有序。總體上來說 三個變數 左邊界 右邊界 中間值 判斷條件 右邊界更新條件和左邊界更新條件 返回值。計算中間值導致的資料越界。一般我們都...

二分查詢和遞迴的二分查詢

在乙個有序的陣列中查詢給定的資料項,把陣列衝中間分成兩半,然後看要查詢的資料項在陣列的哪一半,再次折半查詢。如下 public int find long searchkey else if lowerbound upperbound else private int recfind long se...