思路很简单,创造二分法方法,插入方法,执行代码
public class DinaryInsert { public static void main(String[] args) { int[] arr = { 1, 2, 3, 4, 5, 6, 55, 66, 88, 99 }; System.out.println(binary(arr, 56)); insert(arr, 56); } // 插入的方法 public static void insert(int[] arr, int n) { int[] newarr = new int[arr.length + 1]; for (int i = 0; i < newarr.length; i++) { if (i == binary(arr, n)) { newarr[i] = n; } else if (i > binary(arr, n)) { newarr[i] = arr[i - 1]; } else { newarr[i] = arr[i]; } } for (int j = 0; j < newarr.length; j++) { System.out.println(newarr[j]); } } //## 标题二分法查找,返回插入点索引 public static int binary(int[] arr, int n) { int low = 0; int high = arr.length - 1; int mid = 0; while (low <= high) { mid = (low + high) / 2; if (arr[mid] == n) { return mid; } else if (arr[mid] > n) { high = mid - 1; } else if (arr[mid] < n) { low = mid + 1; } } return mid + 1; } }