關於二分查詢演算法 也叫折半查詢

2022-07-26 14:54:09 字數 1265 閱讀 5999

二分查詢演算法是一種快速的查詢演算法。

當我們再乙個陣列中查詢是否存在某個數時,通常是

直接遍歷

這個陣列直到找到這個數,時間複雜度為o(n)

試想如果資料量很大,上億呢,怎麼辦,這裡我們可以用

一種簡單快速的的查詢演算法--二分查詢演算法也叫做折半

查詢演算法。

二分查詢演算法的演算法思維:

1.首先查詢陣列必須是有序的(假設為公升序)。

2.取查詢陣列中間的數作為基準,如果需要查詢的資料大於基準說明該數存在於

陣列的左邊。反之存在於基準右邊。

3 假設待查詢的數小於基準,那麼將基準換成左子陣列的中間的數,重複步驟2,

直到找到該數。

很顯然對於上億規模的資料查詢,我們可以將待查詢的資料進行排序,然後再用

二分查詢進行查詢。

二分查詢的時間複雜度為o(logn),

logn是什麼意思呢  意思是當我們在1000個元素中查詢某個元素時 只需要10次比較就可以找到該元素

記住二分查詢只能針對有序資料,切記這一點。

二分查詢實現如下:

1 #include 2

using

namespace

std;34

bool findbytwo(int *nums,int numssize,int

number)518

else

1924

if(number

2528}29

}303132

return

false;33

}343536

intmain()37;

40int numssize=10;41

int number=8;

42if

(findbytwo(nums,numssize,number))

4346

else

4750

return0;

51 }

執行截圖:

當查詢8時:

當查詢20時:

ok,二分查詢就介紹結束了哦

二分查詢 折半查詢 演算法

二分查詢也稱折半查詢 binary search 它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。首先,假設表中元素是按公升序排列,將表中間位置記錄的 關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置 記錄將表分成前 後兩個子...

演算法 二分查詢(折半查詢)

二分查詢也稱折半查詢 binary search 它是一種效率較高的查詢方法。使用二分查詢的條件 1.必須採用順序儲存結構。2.必須按關鍵字大小有序排列。通俗一點的說 如果資料是乙個陣列,那麼這個陣列必須是有序的 時間複雜度 o log2n 如圖所示 下面我們來看c語言 include非遞迴實現 v...

演算法 二分查詢(折半查詢)

一.二分查詢基本思想 在有序的序列裡,先將目標和中間的數值比較,如果大於中間數值,則在後半段的中間繼續比對 如果小於中間數值,則在前半段的中間繼續比對。以此類推,直至找到目標,或者結束查詢沒有找到。二.關鍵條件 1 有序序列 2 順序儲存結構 三.時間複雜度 o logn 四.優點和不足 優點是比較...