30 【程序 30 插入数字】
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数, 依次后移一个位置。
package cskaoyan; public class cskaoyan30 { @org.junit.Test public void insertNumber() { java.util.Scanner in = new java.util.Scanner(System.in); int[] arr = { 1, 4, 6, 9, 13, 16, 19, 28, 40, 0 }; System.out.print("原始列表:"); show(arr); System.out.print("插入一个数字:"); int number = in.nextInt(); insert(arr, number); System.out.print("排序后列表:"); show(arr); in.close(); } private void insert(int[] arr, int number) { if (number > arr[arr.length - 1 - 1]) { arr[arr.length - 1] = number; } else { int temp1 = 0; int temp2 = 0; for (int i = 0; i < arr.length - 1; i++) { if (arr[i] > number) { temp1 = arr[i]; arr[i] = number; for (int j = i + 1; j < arr.length; j++) { temp2 = arr[j]; arr[j] = temp1; temp1 = temp2; } break; } } } } private void show(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println(); } }