java:插入一个数,使插入之后的数组仍然有序
程序员文章站
2024-03-15 20:28:48
...
思路:
先对已有的数组进行排序。
在插入一个数字之前,先对排好序的数组从头开始遍历,如果插入的数字恰好大于数组中的一个数,那么就把这个数组中的数以后的数依次向后挪动一个位置,所以,该数字的后面正好空出一个位置,来存放插入的数据。
所以有一个问题特别要注意,就是在定义数组时,数组要预留出所插入的数据的空间,也就是要有一个空位置,比如说这个数组要存放4个数,那么插入一个数据后,该数组的长度就是5了,所以在定义数组的时候,就应该把数组的长度定义为5,这样在插入一个数据时才不会导致数组溢出。
下面是代码:
package homework;
import java.util.Arrays;
import java.util.Scanner;
public class Homework_6 {
public static void insert(int []a,int []b,int x) {
int t=-1;
for(int i=0;i<a.length;i++) {
b[i]=a[i];
if(x>b[i]) t=i;
}
if(t>0) {
for(int i=b.length-2;i>=t+1;i--) {
b[i+1]=b[i];
}
}
b[t+1]=x;
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
int n;
Scanner sc = new Scanner(System.in);
n=sc.nextInt();
int []a;
a=new int[n];
int []b;
b=new int[n+1];
for(int i=0;i<n;i++) {
a[i]=sc.nextInt();
}
Arrays.sort(a);
insert(a,b,4);
for(int i=0;i<b.length;i++)
System.out.print(b[i]+" ");
}
}