排序算法是《數(shù)據(jù)結構與算法》中最基本的算法之一寞焙。
排序算法可以分為內部排序和外部排序。
內部排序是數(shù)據(jù)記錄在內存中進行排序。
而外部排序是因排序的數(shù)據(jù)很大沐序,一次不能容納全部的排序記錄,在排序過程中需要訪問外存堕绩。
常見的內部排序算法有:插入排序策幼、希爾排序、選擇排序奴紧、冒泡排序特姐、歸并排序、快速排序黍氮、堆排序唐含、基數(shù)排序等浅浮。
用一張圖概括:
關于時間復雜度:
平方階 (O(n2)) 排序 各類簡單排序:直接插入、直接選擇和冒泡排序捷枯。
線性對數(shù)階 (O(nlog2n)) 排序 快速排序滚秩、堆排序和歸并排序;
O(n1+§)) 排序淮捆,§ 是介于 0 和 1 之間的常數(shù)郁油。 希爾排序
線性階 (O(n)) 排序 基數(shù)排序,此外還有桶攀痊、箱排序桐腌。
關于穩(wěn)定性:
穩(wěn)定的排序算法:冒泡排序、插入排序苟径、歸并排序和基數(shù)排序案站。
不是穩(wěn)定的排序算法:選擇排序、快速排序棘街、希爾排序蟆盐、堆排序。
冒泡排序
選擇排序
插入排序
希爾排序
歸并排序
快速排序
堆排序
計數(shù)排序
桶排序
基數(shù)排序
文章思路開源項目地址:https://github.com/hustcc/JS-Sorting-Algorithm