二分法查詢的前提是:陣列是有序的
二分查詢演算法是在有序陣列中用到的較為頻繁的一種演算法,在未接觸二分查詢演算法時,最通用的一種做法是,對陣列進行遍歷,跟每個元素進行比較,其時間為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...