插入排序的基本思想是:每步將乙個待排序的紀錄,按其關鍵碼值的大小插入前面已經排序的資料中的適當位置上,直到全部插入完為止。
插入排序由n - 1 趟(pass)排序組成。對於p = 1趟到p = n趟,插入排序保證從位置0到位置p上的元素為已排序狀態。插入排序利用了這樣的事實:位置0到位置p - 1上的元素是已排序的。如下圖所示:
在第p趟,我們將位置p上的元素向左移動到它在前p+1個元素中的正確位置上。基於這種思想,寫了乙個簡單的c語言程式來實現該演算法。
附**:
特點:stable sort、in-place sort
最優複雜度:當輸入陣列就是排好序的時候,複雜度為o(n),而快速排序在這種情況下會產生o(n^2)的複雜度。
最差複雜度:當輸入陣列為倒序時,複雜度為o(n^2)
插入排序比較適合用於「少量元素的陣列」。
簡單插入排序
思想 抽出乙個元素,在其前面的元素中找到適當的位置進行插入 這種方式 是將 待插入元素 逐個跟i 1個已排序元素比較,並交換位置 public static void sort int a 設資料序列有n個元素,最好情況 乙個排好序的序列,如。每趟元素與i 1個元素比較的次數是1次。因為前i 1個元...
簡單插入排序
將未排序的記錄按順序插入到已排好序的記錄當中。穩定性 1 插入排序是穩定排序 2 效率是0 n 2 演算法 1 排好序和未排序的 2 插入乙個未排序的數列,依次和前面相鄰的比較,並判斷是否和前面的數是否進行比較 如 12,34,45 插入10 65 12 34 45 為排好序 插入 10 12 34...
簡單插入排序
簡單插入排序 insertion sort 的演算法描述是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。演算法描述 一般來說,插入排序都採用in place在陣列上實現。具體演算法描述如下 1.從第乙個元素開始,該元素可以認...