在面試的時候二分查詢是用的比較多一種查詢演算法,如何在面試官面前快速準確得的寫出**決定你是否能夠被錄取。以前一直以為二分查詢很簡單,所以就沒怎麼重視,但是真要在面試官面前對著黑板手寫出來,還是漏洞百出。今天自己在電腦面前敲出了二分查詢的**,也花了將近半個小時。對於這種基礎排序查詢演算法,還是得好好重視。
二分查詢的時間複雜度是o(log(n)),最壞情況下的時間複雜度是o(n)。
二分查詢的乙個條件是待查詢的陣列是有序的,我們假設這裡的陣列是公升序的。
二分查詢的主要思路就是設定兩個指標start和end分別指向陣列元素的收尾兩端,然後比較陣列中間結點arry[mid]和待查詢元素。如果待查詢元素小於中間元素,那麼表明帶查詢元素在陣列的前半段,那麼將end=mid-1,如果待查詢元素大於中間元素,那麼表明該元素在陣列的後半段,將start=mid+1;如果中間元素等於待查詢元素,那麼返回mid的值。
//不適用遞迴,如果存在返回陣列位置,不存在則返回-1int binarysearch(int arry,int len,int value)
else
}
int binarysearchrecursion(int arry,int &len,int &value)
void main()
;
int len=sizeof(arry)/sizeof(int);
int espectenum1=4;
int espectenum2=9;
int index=binarysearch(arry,len,espectenum1);
cout<<"index:"<int index2=binarysearchrecursion(arry,len,espectenum2);
cout<<"index2:"<system("pause");
}
二分查詢法
二分查詢要求 1.必須採用順序儲存結構 2.必須按關鍵字大小有序排列。優缺點 折半查詢法的優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。演算法思想 首先,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者...
二分查詢法
有序陣列中的find 方法 public int find long serchkey int lowerbound 0 int upperbound nelems 1 while true curin lowerbound upperbound 2 if a curin serchkey retu...
二分查詢法
演算法基本思想 二分查詢演算法的前置條件是,乙個已經排序好的序列 假設這個序列是公升序排列的 這樣在查詢所要查詢的元素時,首先與序列中間的元素進行比較,如果大於這個元素,就在當前序列的後半部分繼續查詢,如果小於這個元素,就在當前序列的前半部分繼續查詢,直到找到相同的元素,或者所查詢的序列範圍為空為止...