二分法查詢

2021-09-28 13:33:19 字數 1076 閱讀 8045

二分法查詢

今天覆習二分法查詢,適用於有序的陣列中查詢指定值的位置

在沒有用到二分法之前,給定乙個有序的陣列,我們要找到指定值的位置,我們的做法是,迴圈遍歷整個陣列,找到指定的資料與有序陣列中的值相等,而後返回該值的下標。但是這麼做我們會發現如果有序陣列的區間很大,每次便利陣列,會造成大量的時間浪費,時間複雜度o=n;

而在了解了二分查詢之後,我們發現二分查詢的時間複雜度為o=logn;

大大的縮短了查詢的時間

但是二分查詢又有他的侷限性,就是陣列必須是有序的,如果陣列內的資料不是有序的,那麼我們必須先對陣列的資料進行排序,之後再去做查詢。

二分查詢的思想就是分治思想,也叫折半查詢。

意思就是:每次找到陣列中中間位置的值與給定的值進行比較,如果中間的值大於給定的值,那麼將原來的陣列縮小為0—mid-1的範範圍,反之反之。。。

接下來我們看下**的實現:注意這個**是陣列中沒有重複元素的**。。。

**如下:

普通寫法:

static

intselectvalue

(int

a,int n,

intvalue

)else

if(a[mid]

<

value

)else

if(a[mid]

==value

)return mid;

}return-1

;}

遞迴寫法

static

intchazhao

(int

a,int n,

intvalue

)static

intdiguiselect

(int

a,int low,

int hight,

intvalue

)else

if(a[mid]

>

value

)else

if(a[mid]

<

value

)return-1

;}

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...

二分法查詢

前幾天csdn上說只有10 程式設計師能寫出正確的二分法查詢 so.我在看過二分法查詢方法後寫了乙個 一次測試成功.範圍 需要次數 10 4 100 7 1000 10 10000 14 100000 17 1000000 20 除了對特別小的陣列外,二分法查詢表現是非常優秀的.每次對範圍加倍可以建...