二元搜尋法 練習
重點:
只能使用於經過順序排列過的資料,
每次判斷都從中間位置做判斷,執行時間為 O(log n)
import com.sun.org.apache.bcel.internal.generic.BREAKPOINT; import java.util.Arrays; import java.util.Scanner; public class MainClass { public static void main(String[] args) { int list[] = {1, 8, 6, 2, 3, 4, 56, 59, 43,}; int ans = BinarySearch(list, 56); System.out.print(ans); } public static int BinarySearch(int list[], int target) { Arrays.sort(list); //設定最大 最小的index int low = 0; int high = list.length - 1; int mid = 0; while (low <= high) { mid = (low + high) / 2; //每個迴圈開始都要重新設定中間位置 if (list[mid] == target) { return mid; } if (list[mid] < target) { //如果中間值比目標小,將最小位置 移到中間值的左邊 low = mid + 1; } else { //如果中間值比目標大,將最大位置 移到中間值的右邊 high = mid - 1; } } return mid; } }
全站熱搜