插入排序演算法的實現

2021-09-13 10:48:25 字數 868 閱讀 9214

插入排序的基本思想是:每步將乙個待排序的記錄,按其關鍵碼值的大小插入前面已經排序的檔案中適當位置上,直到全部插入完為止。

演算法適用於少量資料的排序,時間複雜度為o(n^2)

遍歷乙個陣列,每次遍歷乙個數的時候,和前邊的數判斷,如果比前邊的數小就和前邊的數交換,這樣直到滿足條件即可。

}我們觀察一下這個**,在swap中每次交換都要做三步替代,那麼這種資料小的話還可以接受,如果資料量很大的話應該可想而知是有多浪費時間的了。那麼我們在這一塊盡量優化一下。

大家想一下,我們可以把要遍歷比較的數e先取出來,然後跟前邊的比較,但是並不進行交換操作,而是直接把前邊的值往後挪,當符合條件的時候就把e放到這個往後挪之後的元素位址這兒。

//改進版

public static void strong_sort(comparable arr)

arr[j] = e;}}

測試結果如下

這個差距確實不小的

插入排序演算法實現

插入排序在眾多排序演算法中是一種穩定的排序方法,其平均與最差時間複雜度均為o n2 空間複雜度為o 1 主要思路 每一次排序都將待排序元素的元素,從已排序的元素的左邊 右邊 開始,依次往右邊 左邊 比較,滿足比較條件的話就交換元素的位置。原理很簡單,先看 include using namespac...

排序演算法 插入排序 C 實現

插入排序的基本思想是每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子檔案中的適當位置,直到全部記錄插入完成為止。常見的插入排序有插入排序 insertion sort 希爾排序 shell sort 二叉查詢樹排序 tree sort 圖書館排序 library sort patien...

排序演算法 插入排序(Java實現)

直接插入排序是指從第二個數字開始從後往前插入,將當前數字依次與前面的數字進行比較,到最後乙個數字完成了依次比較整個排序也就完成了。這個過程可以理解為在玩打牌遊戲的時候,插牌的過程。我們知道這個排序需要兩個迴圈,外層迴圈就是從第二個數字開始向後遍歷,而內層迴圈就是把外層迴圈的當前數字與前面的數字依次比...