题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的 数,依次后移一个位置。
import java.util.Arrays;
public class HelloWorld {
public static void main(String []args) {
int[] arr = {12,25,31,36,54};
int[]newArr=insert(arr,12);
System.out.print(Arrays.toString(newArr));
}
public static int[] insert(int[] arr,int number){
int[] newArr = new int[arr.length+1];
if(arr[arr.length-1]<number){
System.arraycopy(arr, 0, newArr, 0, newArr.length-1);
newArr[arr.length]=number;
}else{
int index = index(arr,number);
System.arraycopy(arr, 0, newArr, 0, index);
newArr[index]=number;
System.arraycopy(arr, index, newArr, index+1, newArr.length-index-1);
}
return newArr;
}
public static int index(int[] arr,int number){
for(int j = 0;j<arr.length;j++){
if(arr[j]<=number&&arr[j+1]>number){
return j+1;
}else if(arr[j]<number&&arr[j+1]>=number){
return j+1;
}else if(arr[j]==number){
return j+1;
}
}
return 0;
}
}