1.排序定義
對一組任意數據元素(或記錄)經過指定關鍵字排序操作後,就可以把它們變成一組按照關鍵字排序的有序序列。
通常排序的目的是快速查找;平時的上下文中,如果提到排序,通常指升序;通常意義上的排序指的是原地排序;
2.衡量排序的指標
一般從以下三個方面來衡量算法:
(1)執行效率;
(2)內存消耗;
(3)穩定性;
2.1排序算法的執行效率
說簡單點,就是時間複雜度的問題
1.最好情況、最壞情況、平均情況時間複雜度
通常我們在分析排序算法時,要分別給出最好情況、最壞情況、平均情況下的時間複雜度問題;
另外,還得清楚最好情況和最壞情況時間複雜度對應的要排序的數據是什麼樣的。
2.時間複雜度的係數、常數、低階
其實呢,時間複雜度反應的是數據規模很大時的一個增長趨勢,所以在表示時間複雜度時通常忽略係數、常數、低階;
但是在實際的開發中,可能會接觸到小規模數據。
所以在對同一階時間複雜度的排序算法性能進行對比時,需要考慮係數、常數、低階。
3.比較次數或交換(或移動)次數
在基於比較的排序算法中,會涉及兩種操作:一是元素比較大小,二是元素交換或移動;所以我們在分析排序算法的執行效率的時候,也要考慮比較次數和交換(或移動)次數。
2.2內存消耗
算法的內存消耗可以通過空間複雜度來衡量,排序算法也是;
原地排序:特指空間複雜度爲O(1)的排序算法
2.3穩定性
穩定性:如果待排序的序列中存在值相等的元素,經過排序後,相等的元素之間原來的先後順序不變
吶,快來看看這張圖,解釋的相當不錯哦
3.排序分類
(1)內部排序:不需要藉助外部存儲器(磁盤)
(2)外部排序:藉助外部存儲器(磁盤)
4.常見的七大排序算法