二分查詢又稱折半查詢是一種高效的查詢方法,可以在乙個有序的陣列中找到特定的值並返回其下標。
1.假設陣列中的陣列按照公升序排列,首先將陣列中間位置的值和需要查詢的數進行比較,
2.判斷陣列中間位置的值若大於所需要的值,則說明所需要查詢的數在中間值的左邊。如果小於所要查詢的值,則說明該數在中間值的右邊。
3.通過修改左右的範圍,再一次進行找中間值,然後與所需的值進行判斷直至找到我們要找的數。
#include
intmain()
;int left =
0; \\左邊的範圍
int key =
5; \\需要查詢的數
int right =
sizeof
(a)/
sizeof
(a[0])
-1; \\右邊的範圍
while
(left <= right)
else
if(a[mid]
< key)
else
if(a[mid]
== key)}if
(left > right)
return0;
}
int
bin_search
(int arr,
int left,
int right,
int key)
else
if(arr[mid]
< key)
else
return mid;
//找到了,返回下標
}return-1
;//找不到
}
二分查詢(折半查詢)
二分查詢 折半查詢 從有序序列中找到給出的要查詢的數字。原理是 首先把乙個有序序列中間位置的值與要查詢的數比較,若相等則找到了有序序列中的此數 否則比較兩者的大小,若前者大,則把有序序列的中間位置以前的元素都去掉,餘下的元素組成乙個新的有序數列繼續上一步的操作,直到找到為止 若後者大,則把有序數列中...
折半查詢(二分查詢)
折半查詢 又稱二分查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有 序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前...
二分查詢(折半查詢)
時間限制 3000 ms 記憶體限制 65535 kb難度 3描述 在某一國度裡流行著一種遊戲。遊戲規則為 在一堆球中,每個球上都有乙個整數編號i 0 i 100000000 編號可重複,現在說乙個隨機整數k 0 k 100000100 判斷編號為k的球是否在這堆球中 存在為 yes 否則為 no ...