最簡單的二分查詢

2021-09-19 01:31:29 字數 657 閱讀 2082

二分法屬於分治法的一種

對於已經從大到小排好序的陣列,從鍵盤中讀入乙個數,查詢陣列中有沒有和讀入資料相同的,有則輸出「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,你的演算法是否會出...