package t18;
import java.util.Arrays;
//有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
public class Test {
public static void main(String[] args) {
int[] arr= {1,2,4,5,6};
System.out.println(Arrays.toString(insert(arr, 0)));
System.out.println(Arrays.toString(insert(arr, 6)));
}
/**
*
* @param arr 原数组
* @param num 插入数字
* @return 新排序数组
*/
public static int[] insert(int[] arr,int num) {
int[] newArr=new int[arr.length+1];
//原数组为升序
if(arr[0]<arr[arr.length-1]) {
if(num>=arr[arr.length-1]) {
System.arraycopy(arr, 0, newArr, 0, arr.length);
newArr[arr.length]=num;
return newArr;
}
if(num<=arr[0]) {
newArr[0]=num;
System.arraycopy(arr, 0, newArr, 1, arr.length);
return newArr;
}
for(int i=0;i<arr.length-1;i++) {
if(num>arr[i]&&num<arr[i+1]) {
System.arraycopy(arr, 0, newArr, 0, i+1);
newArr[i+1]=num;
System.arraycopy(arr, i+1, newArr, i+2, arr.length-i-1);
}
}
}else {//原数组为降序
if(num>=arr[0]) {
newArr[0]=num;
System.arraycopy(arr, 0, newArr, 1, arr.length);
return newArr;
}
if(num<=arr[arr.length-1]) {
System.arraycopy(arr, 0, newArr, 0, arr.length);
newArr[arr.length]=num;
}
for(int i=0;i<arr.length-1;i++) {
if(num<arr[i]&&num>arr[i+1]) {
System.arraycopy(arr, 0, newArr, 0, i+1);
newArr[i+1]=num;
System.arraycopy(arr, i+1, newArr, i+2, arr.length-i-1);
}
}
}
return newArr;
}
}
Java_有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中
最新推荐文章于 2022-11-11 14:46:52 发布
本文介绍如何在已排序的Java数组中,根据原有排序规则插入新的数值,保持数组排序不变。

1万+

被折叠的 条评论
为什么被折叠?



