二分查找法(binary search)。本站提示廣大學習愛好者:(二分查找法(binary search))文章只能為提供參考,不一定能成為您想要的結果。以下是二分查找法(binary search)正文
二分查找法:一種在有序列表中查找某個值的算法,它每次都將待查找的空間分為兩半,在其中一般繼續查找。
使用二分查找的前提是:已經排序好的列表。否則,sum對其查找的結果不做保證。
代碼實現:
// 使用while循環的二分查找法
public static int binarySearch(int[] numbers, int target) {
int min = 0;
int max = numbers.length - 1;
while (min <= max) {
int mid = (max + min) / 2;
if (numbers[mid] == target) {
return mid; // found it
} else if (numbers[mid] < target) {
min = mid + 1; // too small
} else {
max = mid - 1; // too large
}
}
return -min - 1; // not found
}
// 使用遞歸的二分查找法
//參數:數組,數組開始下標,數組結束下標,查詢目標值。
//返回值:為查詢值在原數組中的位置,若查詢值不在數組中,則返回-1
public static int binarySearch(int[] nums ,int start,int end,int target){
int middle = (start + end)/2;
//判斷數組是否為空
if(start > end){
return -1;
}
//數組非空,判斷目標值 if(nums[middle] < target){ start = middle +1; return binarySearch(nums, start, end, target); }else if(nums[middle] == target){ return middle; }else{ end = middle -1; return binarySearch(nums, start, end, target); } }
////end