二分查詢(c++)
二分查詢
二分查詢也稱折半查詢(Binary Search),它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。它充分利用了元素間的次序關係,採用分治策略,可在最壞的情況下用O(log n)完成搜尋任務。它的基本思想是:(這裡假設陣列元素呈升序排列)將n個元素分成個數大致相同的兩半,取a[n/2]與欲查詢的x作比較,如果x=a[n/2]則找到x,演算法終止;如 果x<a[n/2],則我們只要在陣列a的左半部繼續搜尋x;如果x>a[n/2],則我們只要在陣列a的右 半部繼續搜尋x。
#include<iostream>
#include<vector>
using namespace std;
int search_binary(vector<int>v, int value)
{
int low = 0;
int high = v.size() - 1;
int mid = (low + high) / 2;
while (low <= high)
{
if (v[mid] == value)
{
return mid;
}
else if (value < v[mid])
{
high = mid-1;
}
else
{
low = mid + 1;
}
mid= (low + high) / 2;
}
return -1;
}
void main()
{
vector<int>v{ 8,11,19,23,27,33,45,55,67,98 };
cout << search_binary(v, 10);
}
相關文章
- 【C++】迭代器與二分查詢C++
- 查詢——二分查詢
- 二分查詢(一)——純粹的二分查詢
- Python查詢-二分查詢Python
- 二分查詢
- 轉:C++實現的變種二分查詢法(折半查詢)--二叉查詢樹C++
- 查詢演算法__二分查詢演算法
- 順序查詢和二分查詢
- PHP二分查詢PHP
- 二分查詢法
- 查詢演算法之二分查詢演算法
- 二分查詢 | 二分查詢的一種推薦寫法
- 【資料結構】折半查詢(二分查詢)資料結構
- 二分插入與二分查詢
- BinarySearch(二分查詢)
- 詳解二分查詢
- 704.二分查詢
- 二分查詢【折半查詢】演算法 PHP 版演算法PHP
- leetcode -- 二分查詢LeetCode
- PHP 實現二分查詢PHP
- python二分查詢模板Python
- 二分查詢成長錄
- 圖解--二分查詢樹圖解
- 二分搜尋(折半查詢)
- 二分查詢的定義
- leetcode——二分查詢LeetCode
- 力扣之二分查詢力扣
- 二分查詢-不套用模板
- 二分查詢法小記
- 二分查詢演算法演算法
- 演算法->二分查詢演算法
- 【演算法】二分查詢演算法
- 牛客網 查詢(二分查詢、北郵機試)
- 二分查詢基礎專題——二分模板
- 五、二分法查詢
- 遞迴-M--二分查詢遞迴
- Js實現二分查詢,加油JS
- Golang實現二分查詢法Golang