【演算法拾遺】二分查詢遞迴非遞迴實現
轉載請註明出處: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--二分查詢遞迴
- oracle中的遞迴sql查詢 connect by prior實現遞迴Oracle遞迴SQL
- 快速排序【遞迴】【非遞迴】排序遞迴
- Mysql 實現樹狀遞迴查詢MySql遞迴
- Python遞迴函式,二分查詢演算法Python遞迴函式演算法
- 二分查詢的兩種實現形式遞迴和迭代遞迴
- 二十一、氣泡排序演算法——JAVA實現(遞迴與非遞迴)排序演算法Java遞迴
- PostgreSQL 遞迴查詢SQL遞迴
- PostgreSQL=>遞迴查詢SQL遞迴
- SqlServer遞迴查詢SQLServer遞迴
- ORACLE 遞迴查詢Oracle遞迴
- 快速排序(遞迴及非遞迴演算法原始碼)排序遞迴演算法原始碼
- Java實現遞迴查詢樹結構Java遞迴
- Sql Server 使用CTE實現遞迴查詢SQLServer遞迴
- python-動態規劃的遞迴、非遞迴實現Python動態規劃遞迴
- 遞迴和非遞迴分別實現求n的階乘遞迴
- 斐波那契數列的遞迴和非遞迴實現遞迴
- 原:八皇后問題的遞迴和非遞迴Java實現遞迴Java
- 揹包問題的遞迴與非遞迴演算法遞迴演算法
- 遞迴演算法轉換為非遞迴演算法的技巧遞迴演算法
- SQL Server遞迴查詢SQLServer遞迴
- Oracle遞迴查詢sqlOracle遞迴SQL
- 一個遞迴查詢遞迴
- oracle中connect by prior實現遞迴查詢Oracle遞迴
- iOS 演算法之排序、查詢、遞迴iOS演算法排序遞迴
- 歸併排序的非遞迴實現排序遞迴
- 漢諾塔非遞迴演算法遞迴演算法
- 遍歷二叉樹的遞迴與非遞迴程式碼實現二叉樹遞迴
- Android遍歷所有控制元件的遞迴和非遞迴實現Android控制元件遞迴
- 斐波那契數列(Fibonacci)遞迴和非遞迴實現遞迴
- 遍歷二叉樹-------遞迴&非遞迴二叉樹遞迴
- sql無限遞迴查詢SQL遞迴
- grep遞迴查詢子目錄遞迴
- sql遞迴查詢子級SQL遞迴
- Oracle SQL的遞迴查詢OracleSQL遞迴