架构师

您现在的位置是:首页 > 工作面试 > 初级面试

初级面试

Java面试宝典_基础编程练习题_数组排序插值(一)

2019-07-12初级面试
题目题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后

题目

题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。

代码

/**
 * @author :xy.hero@qq.com
 * @date :Created in 2019-07-12 13:13
 * @description:www.jiagou1216.com
 * @modified By:
 * @version: $
 */
public class Test {
    public static void main(String[] args) {
        int[] A = new int[]{0, 8, 7, 5, 9, 1, 2, 4, 3, 12};
        int[] B = sort(A);
        print(B);
        System.out.println();
        System.out.print("请输入一个数字:");
        Scanner scan = new Scanner(System.in);
        int a = scan.nextInt();
        scan.close();
        int[] C = insert(a, B);
        print(C);
    }

    //选择排序
    private static int[] sort(int[] A) {
        int[] B = new int[A.length];
        for (int i = 0; i < A.length - 1; i++) {
            int min = A[i];
            for (int j = i + 1; j < A.length; j++) {
                if (min > A[j]) {
                    int temp = min;
                    min = A[j];
                    A[j] = temp;
                }
                B[i] = min;
            }
        }
        B[A.length - 1] = A[A.length - 1];
        return B;
    }

    //打印
    private static void print(int[] A) {
        for (int i = 0; i < A.length; i++)
            System.out.print(A[i] + " ");
    }

    //插入数字
    private static int[] insert(int a, int[] A) {
        int[] B = new int[A.length + 1];
        for (int i = A.length - 1; i > 0; i--)
            if (a > A[i]) {
                B[i + 1] = a;
                for (int j = 0; j <= i; j++)
                    B[j] = A[j];
                for (int k = i + 2; k < B.length; k++)
                    B[k] = A[k - 1];
                break;
            }
        return B;
    }
}

输出

0 1 2 3 4 5 7 8 9 12 
请输入一个数字:6
0 1 2 3 4 5 6 7 8 9 12 

文章评论