Java 复习
斗地主案例 排序每张扑克
//二分法

public static void main(String[] args) { // 二分法 int[] arr1 = {1, 2, 3, 5, 5, 7, 8, 9}; ps1(arr1,9); // 递归 ps2(arr1, 6, 0, arr1.length - 1); } public static void ps1(int[] data, int target) { int left = 0; int right = data.length - 1; while (left <= right) { int middle = (left + right) / 2; System.out.println(Arrays.toString(Arrays.copyOfRange(data, left, right + 1))); if (data[middle] > target) { right = middle - 1; } else if (data[middle] < target) { left = middle + 1; } else { System.out.println("index:" + middle + "val:" + data[middle]); break; } } } public static void ps2(int[] data, int target, int left, int right) { if (left > right) { return; } int middle = (left + right) / 2; if (data[middle] > target) { ps2(data, target, left, middle - 1); } else if (data[middle] < target) { ps2(data, target, middle + 1, right); } else { System.out.println("index:" + middle + "val:" + data[middle]); return; } }
反射 遍历类所有内容