java有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
时间: 2023-06-05 10:47:52 浏览: 160
有一个已排好序的数组,今输入一个数,要求按排序的规律将它插入数组中。
可以使用二分查找的方法来找到新数应该插入的位置,然后将其插入到数组中。具体步骤如下:
1. 定义一个已经排好序的数组,假设为arr,以及一个新数,假设为num。
2. 使用二分查找的方法找到num应该插入的位置,即找到第一个大于等于num的数的位置。可以使用以下代码实现:
int left = 0;
int right = arr.length - 1;
int mid;
while (left <= right) {
mid = (left + right) / 2;
if (arr[mid] >= num) {
right = mid - 1;
} else {
left = mid + 1;
}
}
int insertIndex = left;
3. 将num插入到数组中,可以使用以下代码实现:
for (int i = arr.length - 1; i >= insertIndex + 1; i--) {
arr[i] = arr[i - 1];
}
arr[insertIndex] = num;
4. 最后,输出插入后的数组即可。
完整代码如下:
public class InsertNum {
public static void main(String[] args) {
int[] arr = {1, 3, 5, 7, 9};
int num = 4;
int left = 0;
int right = arr.length - 1;
int mid;
while (left <= right) {
mid = (left + right) / 2;
if (arr[mid] >= num) {
right = mid - 1;
} else {
left = mid + 1;
}
}
int insertIndex = left;
for (int i = arr.length - 1; i >= insertIndex + 1; i--) {
arr[i] = arr[i - 1];
}
arr[insertIndex] = num;
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
阅读全文