有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中
//int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};//定義一個升序數組
int[] nums = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};//定義一個降序數組
//輸出原始數組
System.out.print("原始數組:");
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i] + " ");
}
System.out.println();
//數組擴容三種方法
//方法一
int[] nums1 = new int[nums.length + 1];
for (int i = 0; i < nums.length; i++) {
nums1[i] = nums[i];
}
for (int i = 0; i < nums1.length; i++) {
System.out.print(nums1[i] + " ");//1 2 3 4 5 6 7 8 9 10 0
}
System.out.println();
//方法二
int[] nums2 = Arrays.copyOf(nums, nums.length + 1);
for (int i = 0; i < nums2.length; i++) {
System.out.print(nums2[i] + " ");
}
System.out.println();
//方法三
int[] nums3 = new int[nums.length + 1];
System.arraycopy(nums, 0, nums3, 0, nums.length);
for (int i = 0; i < nums3.length; i++) {
System.out.print(nums3[i] + " ");
}
System.out.println();
//輸入一個數
Scanner input = new Scanner(System.in);
System.out.print("請輸入一個數:");
int a = input.nextInt();//5
//將數a插入到最後一個位置
nums1[nums1.length - 1] = a;
if (nums1[0] < nums1[nums1.length - 2]) {//若是是升序排列
Arrays.sort(nums1);//仍按升序排序
System.out.print("插入一個數後按原規律排序的數組:");
/*for (int i = 0; i < nums1.length; i++) {
//將其輸出
System.out.print(nums1[i] + " ");//1 2 3 4 5 5 6 7 8 9 10 }*/} else {//若是是降序排列
Arrays.sort(nums1);//先按升序排序
int temp = 0;//臨時變量
//將原數組經過先後交換實現逆序
for (int i = 0; i < nums1.length / 2; i++) {
temp = nums1[i];
nums1[i] = nums1[nums1.length - 1 - i];
nums1[nums1.length - 1 - i] = temp;
}
/*System.out.print("插入一個數後按原規律排序的數組:");
for (int i = nums1.length - 1; i >= 0; i--) { //將其逆序輸出
System.out.print(nums1[i] + " ");//10 9 8 7 6 5 4 4 3 2 1 }*/}
for (int i = 0; i < nums1.length; i++) {
//將其輸出
System.out.print(nums1[i] + " ");
}