二分查詢的兩種實現形式遞迴和迭代
//二分查詢,遞迴
public static int binarySearch(int[]arr,int left,int right,int findVal){
//當left>right時,說明遞迴完整個陣列,仍然沒有找到目標數
if(left>right){
return -1;
}
int mid = (left+right)/2;
int midVal = arr[mid];
if(findVal >midVal){
//向右遞迴
return binarySearch(arr,mid+1,right,findVal);
}else if(findVal<midVal){
//向左遞迴
return binarySearch(arr,left,mid-1,findVal);
}else{
return mid;
}
}
//二分查詢,非遞迴方式,迭代
private int binarySearch(int[]nums,int target){
int start = 0;
int end = nums.length - 1;
while(start<=end){
int mid = (start + end) >>>1;
if(nums[mid]==target){
return mid;
}else if(nums[mid]<target){
//向右迭代
start = mid +1;
}eles{
//向左迭代
end = mid -1;
}
}
return -1;
}
需要注意的是引申到二維陣列的二分查詢時,遞迴中傳入的right=nums[i].length。
相關文章
- 二分法查詢(遞迴實現)遞迴
- 遞迴-M--二分查詢遞迴
- 二分法的簡單實現——-遞迴和非遞迴遞迴
- 第二章 :查詢與排序-------二分查詢的遞迴解法排序遞迴
- Java實現遞迴查詢樹結構Java遞迴
- Python遞迴函式,二分查詢演算法Python遞迴函式演算法
- SqlServer遞迴查詢SQLServer遞迴
- PostgreSQL 遞迴查詢SQL遞迴
- sqlalchemy 遞迴查詢SQL遞迴
- CQRS命令查詢分離架構的多種形式實現 - Kapil架構API
- SQL server資料庫with as子句與遞迴查詢的實現SQLServer資料庫遞迴
- PHP 實現二分查詢PHP
- 全排列的實現之遞迴版與迭代版遞迴
- SSH整合實現分頁查詢(兩種方式)
- 遞迴查詢子元素遞迴
- 二分查詢 | 二分查詢的一種推薦寫法
- 第二章 :查詢與排序-------2.13_三種典型遞迴形式演算法的效能分析排序遞迴演算法
- 兩種形式的dma 實現memory copy程式碼
- 第二章 :查詢與排序-------遞迴形式進行插入排序排序遞迴
- 二叉樹的前序、中序、後序的遞迴和迭代實現二叉樹遞迴
- 對遞迴和迭代的效率的思考和分析遞迴
- Golang實現二分查詢法Golang
- 二分查詢(函式實現)函式
- Js實現二分查詢,加油JS
- 深入理解二分的兩種實現
- 二分查詢實現符號表符號
- Java中用遞迴和迭代實現二叉樹的中序( InOrder )遍歷Java遞迴二叉樹
- 空中翻書的兩種實現形式以及突出特質
- 遞迴和非遞迴分別實現求n的階乘遞迴
- java-遞迴(檔案查詢)Java遞迴
- DNS遞迴解析和迭代解析的區別-VeCloudDNS遞迴Cloud
- Java實現二分查詢演算法Java演算法
- Android遍歷所有控制元件的遞迴和非遞迴實現Android控制元件遞迴
- python 遞迴和二分法Python遞迴
- springBoot + 工廠模式 實現 快遞鳥、順豐和快遞100的物流查詢Spring Boot模式
- 二分查詢(一)——純粹的二分查詢
- 實現反轉連結串列--遞迴、迭代、雙指標、棧遞迴指標
- 查詢——二分查詢