二分查詢演算法
關於二分法查詢,也經常稱折半查詢,思想就是“分而治之”,網上有很多資料,給出維基百科上的連結(,),本文不作贅述。下面給出二分查詢的非遞迴和遞迴的演算法。
執行結果:
點選(此處)摺疊或開啟
-
#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
- LeetCode演算法—二分查詢LeetCode演算法
- 查詢——二分查詢
- 演算法(一):二分查詢法演算法
- 二分查詢演算法詳解演算法
- Java實現二分查詢演算法Java演算法
- 二分查詢及其變種演算法演算法
- 小白懂演算法之二分查詢演算法
- 二分查詢(一)——純粹的二分查詢
- 二分查詢
- 如何找東西?查詢演算法之順序查詢和二分查詢詳解演算法
- 死磕演算法之二分查詢法演算法
- 每日一道演算法:二分查詢演算法
- 查詢演算法之二分法演算法
- Python遞迴函式,二分查詢演算法Python遞迴函式演算法
- 資料結構與演算法-二分查詢資料結構演算法
- 前端開發中的二分查詢演算法前端演算法
- 【資料結構與演算法】—— 二分查詢資料結構演算法
- 二分查詢法
- PHP二分查詢PHP
- leetcode——二分查詢LeetCode
- leetcode -- 二分查詢LeetCode
- 二分查詢 | 二分查詢的一種推薦寫法
- 每週一演算法之二分查詢(Kotlin描述)演算法Kotlin
- Android 面試常見 - 二分查詢演算法題Android面試演算法
- 從酒桌遊戲看二分查詢演算法遊戲演算法
- labuladong_二分查詢
- 二分查詢(c++)C++
- 704.二分查詢
- 詳解二分查詢
- Leetcode 704 二分查詢LeetCode
- 每日leetcode——二分查詢LeetCode
- python二分查詢模板Python
- 資料結構和演算法之——二分查詢下資料結構演算法
- 資料結構和演算法之——二分查詢上資料結構演算法