二分查詢演算法
關於二分法查詢,也經常稱折半查詢,思想就是“分而治之”,網上有很多資料,給出維基百科上的連結(,),本文不作贅述。下面給出二分查詢的非遞迴和遞迴的演算法。
執行結果:
點選(此處)摺疊或開啟
-
#include<iostream>
-
using namespace std;
-
int search(int *, int, int);
-
int searchfdg(int *, int, int, int);
-
int search(int *arra, int key, int high) {
-
int low = 0;
-
while (low <= high)
-
{
-
int mid = (low + high) / 2;
-
if (arra[mid] == key) {
-
return mid;
-
}else if (arra[mid] > key) {
-
high = mid - 1;
-
}else
-
low = mid + 1;
-
}
-
cout << "元素不存在!";
-
return -1;
-
}
-
-
int searchfdg(int *arra, int key,int low,int high) {
-
-
if (low <= high)
-
{
-
int mid = (low + high) / 2;
-
if (key == arra[mid]){
-
return mid;
-
}
-
else if (key < arra[mid]) {
-
return searchfdg(arra, key, low, mid - 1);
-
}else if (key > arra[mid])
-
low = mid + 1;
-
return searchfdg(arra, key, mid+1,high);
-
}
-
else
-
cout << "元素不存在!";
-
return -1;
-
}
-
int main() {
-
int arra[] = {3,5,9,14,17,23,29,33,37 };
-
int size = sizeof(arra) / sizeof(int);
-
cout << "非遞迴查詢的元素在陣列中的位置是:" << endl;
-
cout << search(arra, 33, size-1) << endl;
-
cout << "遞迴查詢的元素在陣列中的位置是:" << endl;
-
cout << searchfdg(arra, 33, 0,size-1) << endl; //注意此時的low和high的值
-
- }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29876893/viewspace-1868404/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 查詢演算法__二分查詢演算法
- 查詢演算法之二分查詢演算法
- 演算法->二分查詢演算法
- 【演算法】二分查詢演算法
- 二分查詢【折半查詢】演算法 PHP 版演算法PHP
- 查詢——二分查詢
- 演算法(一):二分查詢法演算法
- 二分查詢演算法詳解演算法
- 重溫二分查詢演算法演算法
- [演算法]各種二分查詢演算法
- c#-二分查詢-演算法C#演算法
- 【演算法】二分查詢與暴力查詢(白名單過濾)演算法
- 小白懂演算法之二分查詢演算法
- 二分查詢及其變種演算法演算法
- 演算法一 二分查詢( by Python)演算法Python
- Java實現二分查詢演算法Java演算法
- LeetCode演算法—二分查詢LeetCode演算法
- 二分查詢(一)——純粹的二分查詢
- Python查詢-二分查詢Python
- 二分查詢
- 如何找東西?查詢演算法之順序查詢和二分查詢詳解演算法
- 每日一道演算法:二分查詢演算法
- 查詢演算法之二分法演算法
- 死磕演算法之二分查詢法演算法
- 順序查詢和二分查詢
- PHP二分查詢PHP
- 二分查詢法
- 從酒桌遊戲看二分查詢演算法遊戲演算法
- 資料結構與演算法-二分查詢資料結構演算法
- 【資料結構與演算法】—— 二分查詢資料結構演算法
- 前端開發中的二分查詢演算法前端演算法
- 資料結構與演算法——二分查詢演算法資料結構演算法
- 二分查詢 | 二分查詢的一種推薦寫法
- 查詢演算法集:順序查詢、二分查詢、插值查詢、動態查詢(陣列實現、連結串列實現)演算法陣列
- Android 面試常見 - 二分查詢演算法題Android面試演算法
- Python遞迴函式,二分查詢演算法Python遞迴函式演算法
- 【資料結構】折半查詢(二分查詢)資料結構
- 二分插入與二分查詢