/*
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
*/
import java.util.*;
public class Example30 {
public static void main(String[] args){
Random r = new Random();
int[] testArr = new int[20];
for (int i = 0; i < 20; i++) {
testArr[i] = r.nextInt(100);//随机产生100以内的整数20个
}
System.out.print("任意数组 :");
Arrays.sort(testArr);//对数组进行排序
print(testArr);
System.out.print("请任意输入一个数 :");
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
System.out.println("输入的数为:" + num);
System.out.print("排序:" );
print(sort(testArr, num));
}
private static int[] sort(int[] testArr, int num) {
int[] tmpArr = new int[testArr.length+1];
boolean flag = true;//标志位
for(int i=0; i<testArr.length; i++){
if(flag){
if(testArr[i]<num){
tmpArr[i] = testArr[i];//将数组里面的元素复制
}else{
tmpArr[i] = num;//插入数据
System.arraycopy(testArr, i, tmpArr, i+1, testArr.length-i);//将testArr数组从i开始的元素复制到tmpArr数组从i+1开始的位置中
flag = false;//插入成功,标志位修改
}
}else{
break;
}
}
return tmpArr;
}
// 打印数组
public static void print(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
}