二分查詢法演算法【親測】
阿新 • • 發佈:2019-01-05
-
在一個有序陣列中找到一個數的索引
程式碼如下:
public class MyArrayTest { public static void main(String[] args) { int[] arr=new int[]{1,2,3,4,5}; int f=MyArrayTest.binarySearch(4,arr); if (f!=-2) System.out.println(f); else System.out.println("不存在"); } public static int binarySearch(int value,int arr[]) { int min=0 ; int mid ; int max = arr.length; while (true) { mid = (min + max) / 2; if (mid == arr.length) { return -2;//這的作用是:陣列中沒找到value返回-2 } else if (arr[mid] == value) { return mid; } else if (min > max) { return -1; } else { if (arr[mid] > value) { max = mid - 1; } else { min = mid + 1; } } } } }