第三章 二分查詢

2021-10-19 17:42:17 字數 1208 閱讀 6638

今天要學習的是二分查詢。

1.介紹

二分查詢跟歸併與快排一樣都採用了分治思想,它是在乙個有序陣列中查詢資料。

2.方法

將乙個陣列的下標除以2,得到的是中間數,中間數與要查詢的資料進行對比(注意這裡是有序陣列),如果要查詢的資料比中間數大就在中間數的右邊,如果小就在左邊。一直迴圈,直到找到要查詢的資料或者陣列查完。

3.下面看圖

在圖中,我要查詢的是44,起初m是4,left是0,right是9

第一次:m所對應的資料小於查詢的資料,那我就在右邊找,這時候left是5,right不變,m是7

第二次:m所對應的資料大於查詢的資料,在左邊找,這個時候left還是5,right就變成了6,m是5

第三次:m所對應的資料小於查詢的資料,那我就在右邊找,這時候left是6,right不變,m是6,這個時候整個陣列也只剩下最後乙個了

第四次:m等於查詢的資料,查詢結束,返回下標

4.**區

#include

#include

//二分查詢

intbinarysearch

(int

* a,

int len,

int finddataname)

else

//如果查詢的資料小於中間數,就在中間數的左邊找

}return-1

;}intmain()

這是最後的列印結果

這下標所對應的資料正好是44

下面的是遞迴寫法。

//遞迴型二分查詢

intbinarysearch2

(int

* a,

int left,

int right,

int finddataname)

```

5.總結二分查詢屬於經典的查詢演算法,重點還是要學習他的思想,對鍛鍊邏輯思維還是有很大幫助的。

《演算法》 第三章 查詢

在第三章裡面,並不是一開始就講的查詢,第一節中首先介紹的是符號表。符號表,其實就是儲存了鍵值對的一種資料結構,鍵值對用於將乙個鍵和乙個值聯絡起來。符號表支援兩種操作 插入 put 即將一組新的鍵值對存入表中 查詢 get 即根據給定的鍵得到對應的值。下面看一下書中關於符號表的應用以及api 書中對於...

第三章 聯接查詢 2

1 1 建立輔助表dbo.nums set nocount on use tsqlfundamentals2008 goif object id dbo.nums u is not null drop table dbo.nums create table dbo.nums n int not nu...

第二章 第三章

列舉和 define巨集的區別 define巨集常量是在預編譯階段進行簡單替換,列舉常量則是在編譯的時候確定其值。一般在編譯器裡,可以除錯列舉常量,但是不能除錯巨集常量。列舉可以一次定義大量相關的常量,而 define巨集一次只能定義乙個。聯合體 unionperdata 定義了乙個名為perdat...