1. 程式人生 > >排序演算法 -- 直接插入排序

排序演算法 -- 直接插入排序

排序演算法的基本概念

  1. 排序的定義
    這裡寫圖片描述

  2. 排序的穩定性
    這裡寫圖片描述

  3. 內排序與外排序
    內排序是整個排序過程中,待排序的所有記錄全部放置在記憶體中。
    外排序是由於排序的記錄個數太多,不能同時放置在記憶體,整個排序過程需要內外存之間多次資料交換才能進行。

直接插入排序

直接插入排序的基本思路是將一個記錄插入到已經排好序的有序表中,從而得到一個新的,記錄數增1的有序表。其排序過程可以參考下圖。
這裡寫圖片描述

實現程式碼

演算法示例程式採用java實現。

public class InsertSort {

    /**
     * 直接插入排序
     * @param
array */
public static void insertSort(int[] array) { for (int i = 1; i < array.length; ++i) { int record = array[i]; //暫存第i個記錄 int j = 0; //找到第i個元素待插入的位置 for (j = i; j > 0 && array[j - 1] > record; --j) { array[j] = array[j - 1
]; } //插入元素 array[j] = record; } } public static void main(String[] args) { int[] array = {10, 50, 7, 56, 23, 89, 1}; insertSort(array); for (int i =0 ; i < array.length; ++i) { System.out.print(array[i] + "\t"
); } } }

複雜度分析

直接插入排序在空間上僅需一個記錄的輔助空間。

參考資料

大話資料結構