1. 程式人生 > >排序演算法(四)——插入排序

排序演算法(四)——插入排序

插入排序(英語:Insertion Sort)是一種簡單直觀的排序演算法。通過對未排序的資料執行逐個插入至合適的位置而完成排序工作。

插入排序演算法的運作如下:

1.首先對陣列的前兩個資料進行從小到大的排序;

2.接著將第3個數據與排好序的兩個資料進行比較,將第三個資料插入合適的位置;

3.然後,將第4個數據插入已排好序的前3個數據中。

4.不斷重複上述過程,直到把最後一個數據插入合適的位置。

package cn.kimtian.sort;

import java.util.Arrays;

/**
 * 這是一個插入排序演算法
 *
 * @author kimtian
 */
public class InsertionSort {
    public static void main(String[] args) {
        int[] arr = {1, 3, 6, 7, 8, 0, 7, 4, 2, 1};
        insertSort(arr);
        System.out.println(Arrays.toString(arr));
    }

    /**
     * 這是一個插入排序演算法
     *
     * @param arr
     */
    public static void insertSort(int[] arr) {
        //遍歷所有的數字
        for (int i = 1; i < arr.length; i++) {
            //如果當前數字比前一個數字小
            if (arr[i - 1] > arr[i]) {
                int mid = arr[i];
                for (int j = i - 1; j >= 0 && arr[j] > mid; j--) {
                    int temp = arr[j];
                    //交換位置
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }
}