欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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]+" ");
	}

}