插入排序

插入排序

一.什麼是插入排序?

每步將一個待排序的紀錄,按其數值的大小插入前面已經排序的文件中適當位置上,直到所有插入完爲止,其適用於少許數據的排序java

圖片描述

二.java實現

public void insertion_sort(int[] arr) {
        if (arr == null || arr.length < 2) {
            return;
        }
        int i,j,temp;
        for (i=1; i<arr.length; i++) {
            temp = arr[i];
            for (j = i-1; j>=0 && arr[j]>temp; j--) {
                arr[j+1] = arr[j];
            }
            arr[j+1] = temp;
        }
    }

三.算法複雜度

  • 最好複雜度:序列爲正序時複雜度爲O(n)
  • 最好複雜度:序列爲反序時複雜度爲O(n^2)
  • 平均複雜度:O(n^2)

四.算法穩定性

  • 插入排序是穩定的

插入排序是在有序的序列上,一次插入一個元素。固然,剛開始這個有序的小序列只有1個元素,就是第一個元素。比較是從有序序列的末尾開始,也就是想要插入的元素和已經有序的最大者開始比起,若是比它大則直接插入在其後面,不然一直往前找直到找到它該插入的位置。若是遇見一個和插入元素相等的,那麼插入元素把想插入的元素放在相等元素的後面。因此,相等元素的先後順序沒有改變,從原無序序列出去的順序就是排好序後的順序,因此插入排序是穩定的。算法

相關文章
相關標籤/搜索