眾所周知,二分法是非常常見的乙個演算法,小學生甚至都會這樣的方法來玩猜數字遊戲。
二分查詢是一種非常高效率的演算法,它的時間複雜度為o(log2n),空間複雜度為o(1)
def
search
(list
,val)
: left =
0 right =
len(
list
)while
(left <= right)
: mid =
(left + right)//2
if(list
[mid]
== val)
:return mid
elif
(list
[mid]
> val)
: right = mid -
1else
: left = mid +
1return-1
list=[
1,2,
3,4,
5,6,
7,8,
9,10]
print
(search(
list,5
))print
(search(
list,11
))
4
-1
二分查詢 Binary Search
打算重返c c 陣營,所以準備從演算法開始溫習,今天我們談到的是一種效率較高的查詢方法 二分查詢。什麼是二分查詢 二分查詢又稱折半查詢,它是一種效率較高的查詢方法。二分查詢要求 線性表是有序表,即表中結點按關鍵字有序,並且要用向量作為表的儲存結構。二分查詢的基本思想是 1 首先確定該區間的中點位置 ...
二分查詢 BinarySearch
前置條件 乙個有序的序列 假設公升序排列 在序列中查詢指定元素 演算法 首先與序列中間的元素進行比較,如果大於這個元素,就在當前序列的後半部分繼續查詢,如果小於這個元素,就在當前序列的前半部分繼續查詢,直到找到相同的元素,或者所查詢的序列範圍為空為止。int binarysearch vector ...
二分查詢 BinarySearch
二分查詢又稱為折半查詢 首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前 後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢...