插入排序之直接插入排序

2021-08-26 21:56:43 字數 1033 閱讀 4611

直接插入排序

時間複雜度o(n^2)

附加空間o(1)

穩定排序

#define _crt_secure_no_warnings

#include using namespace std;

#define len 8 // 有len個元素要排

struct record ;

void insertsort(record *arr, int length) // length是要排序的元素的個數,0號單元除外 }}

int main(void)

; for (int i = 1; i <= len; i++)

cin >> a[i].key >> a[i].otherinfo;

insertsort(a, len);

for (int i = 1; i <= len; i++)

cout << a[i].key << '\t' << a[i].otherinfo << endl;

return 0;}/*

in.txt:

49 1

38 0

65 0

97 0

76 0

13 0

27 0

49 2

out:

13 0

27 0

38 0

49 1

49 2

65 0

76 0

97 0

*/

若排序的函式寫成下面這樣:

void insertsort(record *arr, int length)	//	length是要排序的元素的個數,0號單元除外

}

**是簡潔了些,但有些微妙的缺陷,如注釋所示。

比如排

12

27

用第二種要浪費兩次複製。

插入排序之直接插入排序

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

插入排序之直接插入排序

依次將每個記錄 無序表 插入到乙個已排好序的有序表中,得到乙個新的,記錄增加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 直接插入排序,一般對於...