插入排序之 直接插入排序(c c )

2021-10-02 12:41:02 字數 954 閱讀 3281

如下,以c中陣列為例來展示該演算法。在insertsort函式中對待排序陣列從第二位數開始進行比較(均與前一位進行比較),在內迴圈中選定該次迴圈待排序數的位置並放置,直接插入是穩定的排序方法。

直接插入排序演算法的時間複雜度為o(n2),空間複雜度為1。

直接插入排序並不能保證每一次使得待排序數處於其最終位置(這是快排的特點)。將insertsort函式看為內外兩個迴圈,外迴圈每次選乙個新的待排序數,而內迴圈將此待排序數及其之前所有數變為有序的。每次執行乙個外迴圈,有序數的個數加一,從而有序數越來越多,直至最終有序,排序結束。

內迴圈的實現是這個排序的重點。

排序函式insertsort的引數為乙個c陣列及陣列長度。從而將原來的陣列進行公升序排序。演算法實現如下:

#include

void

insertsort

(int

* arr,

int num)

;int

main()

;for

(int i =

0; i <

10; i++

) std::cout <<

'\n'

;insertsort

(a,10);

for(

int i =

0; i <

10;i++

)return0;

}//上面的麼得啥用。。。

void

insertsort

(int

* arr,

int num)

}}

穩定降序演算法如下:

void

insertsort

(int

* arr,

int num)

}}

插入排序之直接插入排序

插入排序概述 有乙個已經有序的資料序列,要求在這個已經排好的資料序列中插入乙個數,但要求插入後此資料序列仍然有序,這個時候就要用到一種新的排序方法 插入排序法,插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的 個數加一的有序資料,演算法適用於少量資料的排序,時間複雜度為...

插入排序之直接插入排序

依次將每個記錄 無序表 插入到乙個已排好序的有序表中,得到乙個新的,記錄增加1的有序表 向撲克牌中插入新牌,圖書館整理圖書 有n個數,將第乙個數看做乙個有序表,從第二個開始從後向前比較,第一趟比較前兩個數,然後把第二個數按大小插入到有序表中 第二趟把第三個資料與前兩個數從後向前掃瞄,把第三個數按大小...

插入排序之直接插入排序

packagesort.algorithm publicclassdirectinsertsort inttemp,j for int i 1 i data.length i data j 1 temp 輸出排序好的資料 for int k 0 k data.length k 直接插入排序,一般對於...