方法一:
1.实质就是扩容加上定位排序
2.首先我们先完成扩容
3.然后将添加的元素定位
4.再使用冒泡排序的方法进行排序
Scanner input = new Scanner(System.in);
int[] arr = {10, 12, 45, 90};
do {
int[] arr1 = new int[arr.length + 1];
int temp1 = 0;
System.out.println("请输入你要添加的内容");
int num = input.nextInt();
for( int i = 0;i < arr.length; i++) {
arr1[i] = arr[i];
}
arr1[arr1.length - 1] = num;
arr = arr1;
// System.out.println("===扩容后===");
// for ( int i = 0;i < arr.length; i++) {
// System.out.print(arr[i] + " ");
// }
for( int i = 0;i < arr.length - 1; i++) {//循环次数
for( int j = 0;j < arr.length - i - 1; j++) {//这是比较次数
if (arr[j] > arr[ j + 1]) {
temp1 = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp1;
}
}
}
// System.out.println("==排序后的数组==");
for( int k = 0;k < arr.length; k++) {
System.out.print(arr[k] + " ");
}
System.out.println("您是否需要继续添加 y/n");
char chars = input.next().charAt(0);
if(chars == 'n') {
break;
}
}while(true);
方法二:
思路分析:
// 1.我们先确定元素插入的位置
int[] arr = {10, 12, 45, 90};
int[] arr1 = new int[arr.length + 1];
int addNum = 23;
int index = -1; //用来确定需要插入的下标
for ( int i = 0; i < arr.length; i++) {
if(arr[i] > addNum ) {
index = i;
break; //确定以后直接退出,因为后面的数一定是比要插入的元素要大的
}else{
index = arr.length; //如果数组中没有大于addNum的数,则插入到数组最后
}
}
// System.out.println("下标=" + index);
//下面我们就来完成扩容
//这里我们用两个变量来分别控制这两个数组的下标
for ( int i = 0,j = 0;i < arr1.length; i++) {
if(i != index) {
arr1[i] = arr[j];
j++;//如果不是要插入的位置,新数组跟旧数组一起走,但是如果是,就需要把这个位置空出来用来添加新元素
}else{
arr1[i] = addNum;
}
}
arr = arr1;
for( int i = 0; i < arr.length;i++){
System.out.print(arr[i] + " ");
}