二分法屬於分治法的一種
對於已經從大到小排好序的陣列,從鍵盤中讀入乙個數,查詢陣列中有沒有和讀入資料相同的,有則輸出「yes」,沒有則輸出「no」
按照常規想法,迴圈陣列一遍進行比較,當陣列很大時效率低,採用二分,分而治之,講大問題轉化為小問題進行求解
遞迴方式實現
這裡遞迴就是自身呼叫自身的方式
#include#includeusing namespace std;
int a[105];
//遞迴實現
void select(int x,int begin,int end)//三個引數為 要查詢的數,查詢範圍的起點 查詢範圍的中點
非遞迴實現
#include#includeusing namespace std;
int a[105];
//非遞迴實現
void select(int x,int begin,int end)//三個引數為 要查詢的數,查詢範圍的起點 查詢範圍的中點
} cout<<"no"<>n;
for(int i=0;i>m;
select(m,0,n-1);//進行二分搜尋
return 0;
}
最簡單的二分查詢
題目 描述 給定乙個排序 的整數陣列 公升序 和乙個要查詢的整數key,查詢到key第一次出現的下標 從0開始 並返回下標,如果key不存在於陣列中,返回 1。樣例 在陣列 1,2,3,3,4,5,10 中二分查詢3,返回2。二分查詢是演算法中非常重要的思想。正常情況下,我們在乙個陣列中查詢乙個數是...
E簡單二分查詢
簡單二分查詢 面對二分查詢,主要是你的思路 第一步 你得把陣列有序的排列,一般選擇從小到大。第二步 把l,r,m確定下來。然後看看你得key 如果,key m,你運氣太好一下子就找到了 如果,key如果,key m,此時你考慮在你的右邊找。從小到大排列為例 第三步 迴圈著,就看你的結束條件了,當然了...
陣列 二分查詢 簡單
描述 給定乙個排序的整數陣列 公升序 和乙個要查詢的整數target,用o logn 的時間查詢到target第一次出現的下標 從0開始 如果target不存在於陣列中,返回 1。在陣列 1,2,3,3,4,5,10 中二分查詢3,返回2。挑戰 如果陣列中的整數個數超過了2 32,你的演算法是否會出...