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

2021-10-19 05:13:14 字數 635 閱讀 7166

直接插入排序,是將乙個資料插入到已排好的有序表中,從而得到乙個新的、記錄數量增1的有序表。將資料集合中的資料依次插入到有序表中,將資料集合變為2個資料有序、3個資料有序,依次變為整個集合有序。

直接插入排序時間複雜度o(n^2)。直接插入排序的效能比氣泡排序和簡單選擇排序要略好(待排序演算法寫完後,會有一篇排序演算法的總結對比,分析不同排序演算法的效能對比,穩定性等)。根據直接插入排序原理,每經過一次迴圈,都會增加乙個有序元素,依次將陣列元素插入到有序表中。 經過外層迴圈len - 1次排序後,陣列將會有序。**實現如下:

/*

*@功能說明

* 直接插入排序

*@引數 int * array <#待排序陣列#>

*@引數 int len <#待排序陣列長度#>

*@返回值 <#void#>

*/void directinsertsort(int * array, int len)

array[j] = tmp;

}}

寫到這,發現演算法的名字起的都很形象。氣泡排序,一層層往上冒。 簡單選擇排序,每次選擇乙個最小數,進行交換。直接插入排序,每次將乙個元素插入到乙個有序表中。  至於為什麼直接插入排序的效能比氣泡排序和簡單選擇排序要略好? 請見後面分解。

排序三 直接插入排序

設陣列為a n i 1。1.a 0.i 1 為有序區,現需要插入a i 到a 0 i 1 2.用a i 的值與a 1.n 1 中元素進行大小比較,找到插入位置將a i 插入,原插入位置上的元素依次後移。3.i 若i n則執行1。否則排序結束。來自維基百科 陣列s 9,1,5,3,8,7 第一趟 1,...

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

package 插入排序 直接插入排序 從後向前找到合適位置後插入 穩定 基本思想 每步將乙個待排序的記錄,按其順序碼大小插入到前面已經排序的字序列的合適位置 從後向前找到合適位置後 直到全部插入排序完為止。public class 直接插入排序 system.out.println 排序之前 fo...

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

當插入第i i 1 個元素時,前面的v 0 v i 1 等i 1個 元素已經有序。這時,將第i個元素與前i 1個元素v i 1 v 0 依次比較,找到插入位置即將v i 插入,同時原來位置上的元素向後順移。在這裡,插入位置的查詢是順序查詢。直接插入排序是一種穩定的排序演算法,其實現如下 public...