二分查詢演算法C 實現

2021-08-15 22:56:58 字數 664 閱讀 9986

二分法查詢的前提是:陣列是有序的

二分查詢演算法是在有序陣列中用到的較為頻繁的一種演算法,在未接觸二分查詢演算法時,最通用的一種做法是,對陣列進行遍歷,跟每個元素進行比較,其時間為o(n).但二分查詢演算法則更優,因為其查詢時間為o(lgn),譬如陣列,查詢元素36,用二分查詢的演算法執行的話,其順序為:

1.第一步查詢中間元素,即23,由於23<36,則36必然在23之後的陣列元素中,那麼就在中查詢,

2.尋找的中位數,為36,即找到了。

二分查詢演算法就是不斷將陣列進行對半分割,每次拿中間元素和goal(目標數)進行比較。

具體**實現如下:

#include"stdafx.h"

#include

using namespace std;

int binary_search(int* x,int size,int goal)

else if(x[imiddle]

else 

}return -1;

}int main()

int igoal = 3453;

int iindex = binary_search(a,size,igoal);

if(iindex != -1)

else

return 0;

}

C 實現二分查詢演算法

想必二分查詢很多人都不陌生,或許說很熟悉,但是在實際生活中又有很多人不能正確的寫出它的相應 因為二分查詢的邊界條件等很難控制,下面我們來仔細的分析一下二分查詢,這只是個人看法,如有異議,歡迎提出。1 二分查詢可以解決的問題 二分查詢可以解決預排序陣列的查詢問題。只要陣列中包含t 即要查詢的值 那麼通...

c 實現二分查詢 折半查詢 演算法

二分查詢是一種常用的查詢演算法,它不難理解,但是在解決一些問題的時候由於邊界問題的處理不當,經常會出現一些錯誤,比如說死迴圈。首先我們介紹乙個基礎應用,在乙個排序好的線性表中查詢目標。問題描述 給定乙個整數x和整數 解決思路 一種自然而然的想法是從左到右掃瞄,它的執行時間是線性的,但是對於乙個龐大的...

二分查詢演算法實現

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...