java有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中
时间: 2023-11-05 18:27:55 浏览: 114
好的,这是一个比较经典的数组插入问题。
假设已经有一个按从小到大排序好的数组arr,需要将一个新元素num插入到数组中,使得插入后的数组仍然是从小到大排序的。
那么我们可以采用以下的算法:
1. 定义一个新数组newArr,长度比原数组arr多1,用于存放插入后的结果。
2. 遍历原数组arr,同时比较当前元素与新元素num的大小,将其插入到新数组newArr中。
3. 如果新元素num比当前元素小,则将newArr中的当前位置设为num,并将原数组剩余部分依次插入到newArr中。
4. 如果新元素num比当前元素大,则直接将当前元素插入到newArr中。
5. 最后返回新数组newArr即可。
以下是Java代码实现:
```java
public static int[] insert(int[] arr, int num) {
int[] newArr = new int[arr.length + 1];
int i = 0;
for (; i < arr.length; i++) {
if (num < arr[i]) {
newArr[i] = num;
break;
} else {
newArr[i] = arr[i];
}
}
if (i == arr.length) {
newArr[i] = num;
} else {
for (int j = i; j < arr.length; j++) {
newArr[j+1] = arr[j];
}
}
return newArr;
}
```
注意,上述代码中假设原数组arr从小到大排序。如果从大到小排序,只需要将if和else分支中的比较符号(<、>)调换即可。
阅读全文