1. 程式人生 > >演算法學習筆記--插入排序

演算法學習筆記--插入排序

插入排序:將每一個元素插入到其他已經有序的陣列的適當位置。為了給插入的元素騰出空間,需要將其餘所有元素在插入之前都向右移動一位。

插入排序也很簡單,java程式碼如下:

/**
 *插入排序
 */
public class Insertion {

    public static void sort(int[] a){

        int N = a.length;
        for (int i = 1; i < N; i++) {     //將a[i]插入到a[i-1],a[i-2],a[i-3]...之中
            for (int j = i; j > 0
&& (a[j] < a[j-1]); j--) { int temp = a[j]; a[j] = a[j-1]; a[j-1] = temp; } } } }

插入排序軌跡圖:

這裡寫圖片描述

插入排序的特點:

1、對於隨機排列的長度為N且主鍵不重複的陣列,平均情況下插入排序需要~(N^2)/4次比較以及~(N^2)/4次交換。最壞的情況下需要(N^2)/2次比較和(N^2)/2次交換,最好的情況下需要N-1次比較和0次交換。

2、插入排序對於部分有序的陣列十分高效,也適合小規模陣列。

以下幾種場景適合插入排序:

1、陣列中每個元素距離它的最終位置都不遠。

2、一個有序的大陣列接一個小陣列

3、陣列中只有幾個元素的位置不正確。