二分查詢演算法(折半查詢)猜數字

2021-09-25 20:43:53 字數 925 閱讀 3695

二分查詢演算法是建立在有序陣列基礎上的

在未接觸到二分查詢演算法時,我們對陣列進行遍歷,每個元素進行比較,即順序查詢。二分查詢較順序查詢更優,因為這種演算法每一次比較都使查詢範圍縮小一半。

演算法思想為:

查詢過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則查詢過程結束;

如果某一待查詢元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟第1點一樣從中間元素開始繼續進行查詢。

如果在某一步驟陣列為空,則代表找不到

優缺點:

優點是比較次數少,查詢速度快,平均效能好

其缺點是要求待查表為有序表,且插入刪除困難

所以,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。

演算法**:

#include

#include

intbinary_search

(int arr,

int k,

int left,

int right)

else

if(arr[mid]

> k)

else

}return-1

;}intmain()

;int k =5;

int left =0;

int right =

sizeof

(arr)

/sizeof

(arr[0]

)-1;

int ret =0;

ret =

binary_search

(arr, k, left, right);if

(-1== ret)

else

system

("pause");

return0;

}

二分查詢 折半查詢 和猜數字小遊戲

一 二分查詢 1 二分查詢的思想 前提 二分查詢的序列一定是按照公升序或降序排列,不然無法使用。定義left指向第乙個元素,right指向最後乙個元素,mid指向中間元素 mid left right left 1 定義size sizeof arr sizeof arr 0 可以求得陣列的整個長度...

二分查詢 折半查詢 演算法

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

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

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