【資料結構】折半查詢(二分查詢)
折半搜尋,也稱二分查詢演算法、二分搜尋,是一種在有序陣列中查詢某一特定元素的搜尋演算法。搜素過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜素過程結束;如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一樣從中間元素開始比較。如果在某一步驟陣列為空,則代表找不到。這種搜尋演算法每一次比較都使搜尋範圍縮小一半。
下面的程式碼給出了兩種方法實現了該演算法。
#include <stdio.h>
int BinarySearch(int a[], int n, int key)//二分查詢的一種寫法
{
int low,high,mid;
low = 0;
high = n-1;
while(low <= high)
{
mid = (low+high)/2;
if(key < a[mid])
high = mid-1;
else if(key > a[mid])
low = mid+1;
else
return mid;
}
return -1;
}
int HalfSeek(int a[], int low, int high, int key)
{
int mid;
if((low >= high) && (a[low] != key))
return -1;
mid = (low + high)/2;
if(key < a[mid])
high = mid-1;
else if(key > a[mid])
low = mid+1;
else
return mid;
return HalfSeek(a, low, high, key);
}
int HalfSearch(int a[], int n, int key)//二分查詢的另外一種寫法
{
return HalfSeek(a, 0, n-1, key);
}
int main()
{
int result1,result2;
int a[]={12,44,59,64,72,83,89,97,180};//注意折半查詢(二分查詢)要求序列為有序的
result1 = BinarySearch(a,9,12);
result2 = HalfSearch(a,9,12);
printf("%d %d\n",result1,result2);
return 0;
}
相關文章
- 資料結構 折半查詢 swift的版本資料結構Swift
- 二分查詢【折半查詢】演算法 PHP 版演算法PHP
- 二分搜尋(折半查詢)
- 查詢之折半查詢
- 資料結構之查詢(順序、折半、分塊查詢,B樹、B+樹)資料結構
- 【演算法資料結構Java實現】折半查詢演算法資料結構Java
- 查詢與排序02,折半查詢排序
- 資料結構與演算法-二分查詢資料結構演算法
- 【資料結構與演算法】—— 二分查詢資料結構演算法
- [資料結構] 二分查詢 (四種寫法)資料結構
- 轉:C++實現的變種二分查詢法(折半查詢)--二叉查詢樹C++
- 資料結構-單連結串列查詢按序號查詢資料結構
- 查詢——二分查詢
- BST查詢結構與折半查詢方法的實現與實驗比較
- #查詢演算法#【1】簡單查詢:順序、折半查詢演算法
- 23.資料結構 查詢資料結構
- 資料結構與演算法整理總結---二分查詢資料結構演算法
- C語言折半查詢C語言
- java實現折半查詢。Java
- 資料結構和演算法之——二分查詢上資料結構演算法
- 資料結構和演算法之——二分查詢下資料結構演算法
- 6-1 二分查詢 (20分) PTA 資料結構資料結構
- javascript資料結構之二分查詢簡單介紹JavaScript資料結構
- 演算法與資料結構——二分查詢插入點演算法資料結構
- Python查詢-二分查詢Python
- 折半查詢法的平均查詢長度(成功/失敗)
- 重學資料結構(八、查詢)資料結構
- 資料結構之三大查詢資料結構
- 資料結構與演算法——二分查詢演算法資料結構演算法
- 查詢演算法__二分查詢演算法
- 順序查詢和二分查詢
- 折半查詢(C++實現)C++
- 泛型化的折半查詢泛型
- 二分查詢(一)——純粹的二分查詢
- 二分查詢
- 查詢演算法之二分查詢演算法
- 查詢表結構
- 【PHP資料結構】雜湊表查詢PHP資料結構