java2个按升序(从小到大)排列的数列_有n个整数,已经按照从小到大的顺序排列好,再输入一个数,把它插入到原有的数列中,而且仍保持有序,同时输出新数列。...
时间: 2024-02-22 08:00:17 浏览: 70
可以使用插入排序的思想,将新数插入到原有的有序数列中。
具体实现可以使用双指针,从数列的两端开始遍历,找到新数应该插入的位置。比如,如果新数比数列中最小的数还小,直接将新数插入到数列的最前面;如果新数比数列中最大的数还大,直接将新数插入到数列的最后面;如果新数在数列中间,需要不断比较找到插入的位置。
下面是 Java 代码实现:
```java
public class InsertNumberInSortedArray {
public static void main(String[] args) {
int[] arr = {1, 3, 4, 7, 8, 10};
int n = 6;
int num = 5;
int[] res = insertNumber(arr, n, num);
for (int i = 0; i < res.length; i++) {
System.out.print(res[i] + " ");
}
}
public static int[] insertNumber(int[] arr, int n, int num) {
int[] res = new int[n + 1];
int i = 0, j = n - 1, pos = n;
while (i <= j) {
int mid = (i + j) / 2;
if (arr[mid] == num) {
pos = mid;
break;
} else if (arr[mid] > num) {
j = mid - 1;
pos = mid;
} else {
i = mid + 1;
pos = mid + 1;
}
}
for (int k = 0; k < pos; k++) {
res[k] = arr[k];
}
res[pos] = num;
for (int k = pos + 1; k < n + 1; k++) {
res[k] = arr[k - 1];
}
return res;
}
}
```
在上面的代码中,我们使用了二分查找的方法来找到新数应该插入的位置,然后将原有数列分别插入到新数的左侧和右侧。最终得到的 res 数组就是新的有序数列。
阅读全文