java 在一个有序的数组中插入一个数,使得插入后的数组有序。
时间: 2024-05-02 22:19:56 浏览: 104
可以使用二分查找的思路,先确定插入的位置,再移动后续元素。具体实现为:
1. 使用二分查找确定新数应该插入的位置,得到插入点 insertIndex。
2. 将新数插入到 insertIndex 位置。
3. 从插入点开始遍历数组,将后续元素全部向后移动一个位置,直到数组末尾。
以下是实现示例代码:
```java
public static void insertSorted(int[] arr, int num) {
int len = arr.length;
int insertIndex = binarySearchInsertPoint(arr, num);
// 将新数插入到插入点
for (int i = len - 1; i > insertIndex; i--) {
arr[i] = arr[i-1];
}
arr[insertIndex] = num;
}
// 使用二分查找确定插入点
private static int binarySearchInsertPoint(int[] arr, int num) {
int l = 0, r = arr.length - 1;
while (l <= r) {
int mid = (l + r) / 2;
if (arr[mid] == num) {
return mid;
} else if (arr[mid] < num) {
l = mid + 1;
} else {
r = mid - 1;
}
}
return l;
}
```
阅读全文