資料結構 排序

2021-09-27 10:16:21 字數 3019 閱讀 4680

2019.12.19 總結 多一句口訣;補充了十大排序動畫鏈結

所屬策略

排序策略

一句話總結

時間複雜度

穩定性插入

直接插入排序

哨兵;後面往前面插

o(n^2)

穩定插入

希爾排序

子表排序;設定增量

o(n^2)【最壞情況下】

不穩定交換

氣泡排序

豎著寫;底部開始依次交換

o(n^2)

穩定交換

快速排序

分治,基準找位置

o(n^2)

不穩定選擇

簡單選擇排序

無序中找最小的和基準交換o(n^2)

不穩定選擇

堆排序大小根堆,反覆調整

o(nlog2n)

不穩定歸併

歸併排序

幾種組合,最後合併

o(nlog2n)

穩定基數

基數排序

lsd,msd,桶排序,篩選

o(d(n分配 + r收集))

穩定不穩定:快選堆希(快速排序,選擇排序,堆排序,希爾排序)

穩定:插冒歸基(插入排序,氣泡排序,歸併排序,基數排序(桶排序))

演示細節:動畫展示各種排序演算法

插入排序

原理:設定乙個哨兵,然後往後迴圈挨個往前插入。

穩定:插入前面的時候是從後往前插的肯定穩定。

void

insertsort

(elemtype a,

int n)

a[j +1]

= a[0]

;// 在這個位置上把數字插進去// }}

}

希爾排序

原理:分組;增量

穩定性:分組不同,順序不同,所以不穩定。

void

shellsort

(elemtype a,

int n)

a[j + d]

= a[0]

;// 多減了乙個d的值 }}

}}

氣泡排序

原理:豎著寫,底部累次交換.

穩定性:底部交換,滿足條件才換,所以穩定。

void

bubblesort

(elemtype a,

int n)}if

(flag ==

false

)// 未出現過變動,則已經有序

return;}

}

快速排序

原理:分治思想

穩定性:中間涉及到交換,肯定不穩定。

必看文章:【普及一下】【例項講解】

int

part

(elemtype a,

int low ,

int high)

a[low]

= a[high]

;while

(low <= pivot)

a[high]

= a[low];}

a[low]

= pivot;

// 當軸位置確定好之後,再去將數字放進去

return low;

}void

quicksort

(elemtype a,

int low ,

int high)

簡單選擇

原理:無須列表中找有序的往前依次交換。

穩定性:這個地方是交換,使得可能會把同樣的換回來。(交換的時候不檢查)

void

selectsort

(elemtype a,

int n)

if(min != i)

// 如果不是當前的數值,則swap

swap

(a[i]

, a[min]);

}}

堆排序

原理:作業排程,自下往上,檢查從上至下。

特點:堆排序最壞的情況下,時間複雜度也是o(nlogn)。而且對排序僅需要乙個記錄大小提供交換的輔助儲存空間。

歸併排序

原理:幾組之間,互相組合,最後排序。

穩定性:合併的時候順序合併,使得可以穩定。

elemtype *b =

(elemtype *

)malloc

((n +1)

*sizeof

(*elemtype));

void

merge

(elemtype a,

int low ,

int mid ,

int high)

for(

int i = low , j = mid +

1, k = i ; i <= mid && j <= high ; k ++

)else

}// 未填滿的部分賦值下來

while

(i <= mid) a[k ++

]= a[i ++];

while

(j <= high) a[k ++

]= a[j ++];

}void

mergesort

(elemtype a,

int low ,

int high)

}

資料結構 排序

小小總結了下 希望別不記得 排序型別 排序方法 平均時間 最壞時間 最好時間 穩定空間 插入直接插入 o n2 o n2 o n 穩定o 1 希爾排序 o n3 2 增量序列最後為1,只有公因子1 不穩o 1 選擇簡單選擇 o n2 o n2 o n 穩定o 1 堆排序o n lb n o n lb...

資料結構 排序

郝斌版 資料結構 學習筆記 冒泡 公升序,12比,大放後面,再23比,直至最大的在最後面 插入 2,3,4,依次插入值,保證插入值後的序列為有序的 選擇 後面所有的最小值依次排到最前 快速排序 歸併排序 22排,44排,88排.排序演算法標準 時間,空間,穩定性 排序和查詢的關係 排序是查詢的前提,...

資料結構 排序

1.希爾排序 shellsort 增量序列d n為要排序數的個數 void shellinsertsort int a,int n,int dk n個要排序的數,dk是增量 2 堆排序 已知h s m 除了h s 外均滿足堆的定義 調整h s 使其成為大頂堆.即將對第s個結點為根的子樹篩選,para...