題目描述

完成插入排序法,並將陣列排序後輸出。



原題網址

https://www.hackerrank.com/challenges/correctness-invariant

輸入格式

輸入有兩行,第一行為陣列的大小,範圍在1到1000之間(包含1和1000)。第二行為陣列的所有元素,用空格字元分隔,範圍在-1500到1500之間(包含-1500和1500)。

輸出格式

將輸入的陣列排序之後依序輸出,每個元素用空格字元分隔。

範例輸入

6
1 4 3 5 6 2

範例輸出

1 2 3 4 5 6

解題概念

有關於插入排序法的介紹可以參考以下這篇文章:

https://magiclen.org/sorting-algorithm/

參考答案

import java.util.*;

public class Solution {

    public static void insertionSort(int[] A) {
        for (int i = 1; i < A.length; i++) {
            int value = A[i];
            int j = i - 1;
            while (j >= 0 && A[j] > value) {
                A[j + 1] = A[j];
                j = j - 1;
            }
            A[j + 1] = value;
        }

        printArray(A);
    }

    static void printArray(int[] ar) {
        for (int n : ar) {
            System.out.print(n + " ");
        }
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] ar = new int[n];
        for (int i = 0; i < n; i++) {
            ar[i] = in.nextInt();
        }
        insertionSort(ar);
    }
}