【演算法拾遺】二分查詢遞迴非遞迴實現
轉載請註明出處:http://blog.csdn.net/ns_code/article/details/33747953
本篇博文沒太多要說的,二分查詢很簡單,也是常見常考的查詢演算法,以下是遞迴非遞迴的實現。
非遞迴實現:
/*
非遞迴實現,返回對應的序號
*/
int BinarySearch(int *arr,int len,int key)
{
if(arr==NULL || len<1)
return -1;
int low = 0;
int high = len-1;
while(low <= high)
{
int mid = (low+high)>>1;
if(key == arr[mid])
return mid;
else if(key < arr[mid])
high = mid-1;
else
low = mid+1;
}
return -1;
}
遞迴實現:/*
遞迴實現,返回對應的序號
*/
int BSearch(int *arr,int low,int high,int key)
{
if(arr==NULL || low>high)
return -1;
int mid = (low+high)>>1;
if(arr[mid] == key)
return mid;
else if(arr[mid] > key)
return BSearch(arr,low,mid-1,key);
else
return BSearch(arr,mid+1,high,key);
}
/*
將遞迴實現的方法封裝起來
*/
int BinSearch(int *arr,int len,int key)
{
return BSearch(arr,0,len-1,key);
}
相關文章
- 二分法查詢(遞迴實現)遞迴
- 二分法的簡單實現——-遞迴和非遞迴遞迴
- 遞迴-M--二分查詢遞迴
- Python遞迴函式,二分查詢演算法Python遞迴函式演算法
- 快速排序【遞迴】【非遞迴】排序遞迴
- 二分查詢的兩種實現形式遞迴和迭代遞迴
- 二十一、氣泡排序演算法——JAVA實現(遞迴與非遞迴)排序演算法Java遞迴
- SqlServer遞迴查詢SQLServer遞迴
- PostgreSQL 遞迴查詢SQL遞迴
- sqlalchemy 遞迴查詢SQL遞迴
- python-動態規劃的遞迴、非遞迴實現Python動態規劃遞迴
- Java實現遞迴查詢樹結構Java遞迴
- 快速排序(遞迴及非遞迴演算法原始碼)排序遞迴演算法原始碼
- 遞迴和非遞迴分別實現求n的階乘遞迴
- 遞迴查詢子元素遞迴
- 揹包問題的遞迴與非遞迴演算法遞迴演算法
- iOS 演算法之排序、查詢、遞迴iOS演算法排序遞迴
- Android遍歷所有控制元件的遞迴和非遞迴實現Android控制元件遞迴
- 歸併排序的非遞迴實現排序遞迴
- 遍歷二叉樹的遞迴與非遞迴程式碼實現二叉樹遞迴
- 遍歷二叉樹-------遞迴&非遞迴二叉樹遞迴
- 第二章 :查詢與排序-------二分查詢的遞迴解法排序遞迴
- python實現二叉樹及其七種遍歷方式(遞迴+非遞迴)Python二叉樹遞迴
- java-遞迴(檔案查詢)Java遞迴
- 棧實現遞迴遞迴
- lambda實現遞迴遞迴
- 二叉樹——後序遍歷的遞迴與非遞迴演算法二叉樹遞迴演算法
- 【C++】翻轉二叉樹(遞迴、非遞迴)C++二叉樹遞迴
- SQL server資料庫with as子句與遞迴查詢的實現SQLServer資料庫遞迴
- 遞迴樹形查詢所有分類遞迴
- 演算法小專欄:遞迴與尾遞迴演算法遞迴
- 遞迴實現原則遞迴
- 遞迴和尾遞迴遞迴
- Vue3.0的遞迴監聽和非遞迴監聽Vue遞迴
- 遞迴演算法遞迴演算法
- 五大演算法程式碼模板(DFS 遞迴非遞迴都算上,是六個)演算法遞迴
- 二叉樹的四種遍歷(遞迴與非遞迴)二叉樹遞迴
- 資料結構-樹以及深度、廣度優先遍歷(遞迴和非遞迴,python實現)資料結構遞迴Python
- 二十、快速排序演算法——JAVA實現(遞迴)排序演算法Java遞迴