程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 二分查找法(binary search)

二分查找法(binary search)

編輯:關於JAVA

二分查找法(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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved