二分查詢(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);
}
相關文章
- 查詢——二分查詢
- 二分查詢(一)——純粹的二分查詢
- 二分查詢
- 查詢演算法__二分查詢演算法
- 二分查詢法
- PHP二分查詢PHP
- leetcode——二分查詢LeetCode
- leetcode -- 二分查詢LeetCode
- 查詢演算法之二分查詢演算法
- 二分查詢 | 二分查詢的一種推薦寫法
- C++,Java,Python,Javascript實現二分查詢演算法C++PythonJavaScript演算法
- 704.二分查詢
- labuladong_二分查詢
- 詳解二分查詢
- python二分查詢模板Python
- 每日leetcode——二分查詢LeetCode
- Leetcode 704 二分查詢LeetCode
- 二分查詢【折半查詢】演算法 PHP 版演算法PHP
- 【演算法】二分查詢演算法
- 演算法->二分查詢演算法
- 力扣之二分查詢力扣
- 二分查詢的定義
- 二分查詢-不套用模板
- 二分搜尋(折半查詢)
- PHP 實現二分查詢PHP
- 圖解--二分查詢樹圖解
- 二分查詢成長錄
- 牛客網 查詢(二分查詢、北郵機試)
- 二分查詢基礎專題——二分模板
- 陣列的查詢(搜尋):線性查詢和二分法查詢陣列
- 二分查詢 理論 例題
- LeetCode演算法—二分查詢LeetCode演算法
- 基礎二分查詢總結
- 二分查詢的簡單理解
- 二分查詢法(Binary_Search)
- 聊一聊二分查詢法
- 二分查詢(函式實現)函式
- 五、二分法查詢