本系列算法整理自:https://github.com/hustcc/JS-Sorting-Algorithm
同時也參考了維基百科做了一些補充膛锭。
排序算法是《數(shù)據(jù)結(jié)構(gòu)與算法》中最基本的算法之一。
排序算法可以分為內(nèi)部排序和外部排序恒削,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序瘦陈,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存俐载。常見的內(nèi)部排序算法有:插入排序、希爾排序登失、選擇排序遏佣、冒泡排序、歸并排序揽浙、快速排序状婶、堆排序、基數(shù)排序等馅巷。用一張圖概括:
image.png
點擊以下圖片查看大圖:
image.png
關(guān)于時間復(fù)雜度
平方階 (O(n2)) 排序 各類簡單排序:直接插入膛虫、直接選擇和冒泡排序。
線性對數(shù)階 (O(nlog2n)) 排序 快速排序钓猬、堆排序和歸并排序走敌;
O(n1+§)) 排序,§ 是介于 0 和 1 之間的常數(shù)逗噩。 希爾排序
線性階 (O(n)) 排序 基數(shù)排序掉丽,此外還有桶、箱排序异雁。
關(guān)于穩(wěn)定性
穩(wěn)定的排序算法:冒泡排序捶障、插入排序、歸并排序和基數(shù)排序纲刀。
不是穩(wěn)定的排序算法:選擇排序项炼、快速排序、希爾排序、堆排序锭部。
名詞解釋:
- n:數(shù)據(jù)規(guī)模
- k:"桶"的個數(shù)
- In-place:占用常數(shù)內(nèi)存暂论,不占用額外內(nèi)存
- Out-place:占用額外內(nèi)存
- 穩(wěn)定性:排序后 2 個相等鍵值的順序和排序之前它們的順序相同
包含以下內(nèi)容:
- 冒泡排序
- 選擇排序
- 插入排序
- 希爾排序
- 歸并排序
- 快速排序
- 堆排序
- 計數(shù)排序
- 桶排序
- 基數(shù)排序
原文:https://www.runoob.com/w3cnote/ten-sorting-algorithm.html