排序演算法系列

2021-09-06 16:14:38 字數 1870 閱讀 5425

概述

概念

排序是計算機內經常進行的一種操作,其目的是將一組「無序」的記錄序列調整為「有序」的記錄序列。

排序分為內部排序和外部排序。

若整個排序過程不需要訪問外存便能完成,則稱此類排序問題為內部排序

反之,若參加排序的記錄數量很大,整個序列的排序過程不可能在記憶體中完成,則稱此類排序問題為外部排序

排序分類

如果按照策略來分類,大致可分為:交換排序、插入排序、選擇排序、歸併排序和基數排序。如圖-排序策略分類圖所示。

圖-排序策略分類圖

演算法分析

下表給出各種排序的基本效能,具體分析請參看各排序的詳解。

排序類別排序方法時間複雜度空間複雜度穩定性複雜性

平均情況最壞情況最好情況

交換排序

氣泡排序o(n2)

o(n2)

o(n)

o(1)

穩定簡單

快速排序o(nlog2n)

o(n2)

o(nlog2n)

o(nlog2n)

不穩定較複雜

插入排序

直接插入排序o(n2)

o(n2)

o(n)

o(1)

穩定簡單

希爾排序o(nlog2n)

o(n1.5)

o(1)

不穩定較複雜

選擇排序

簡單選擇排序o(n2)

o(n2)

o(n2)

o(1)

不穩定簡單

堆排序o(nlog2n)

o(nlog2n)

o(nlog2n)

o(1)

不穩定較複雜

歸併排序

歸併排序o(nlog2n)

o(nlog2n)

o(nlog2n)

o(n)

穩定較複雜

基數排序

基數排序o(d(n+r))

o(d(n+r))

o(d(n+r))

o(n+r)

穩定較複雜

系列文章

排序一 氣泡排序

排序二 快速排序

排序三 直接插入排序

排序四 希爾排序

排序五 簡單選擇排序

排序六 堆排序

排序七 歸併排序

排序八 基數排序

排序演算法系列 選擇排序

選擇排序可以說是眾多排序演算法中,最基礎 最直觀的乙個演算法了。它的思想十分簡單 遍歷列表,找出最小的乙個數,記下索引 將最小的數新增到新的列表中,同時刪除原陣列中的數 重複第一步 舉個例子 假如現在有乙個無序陣列disorder arr 4,2,19,10,1 和乙個空陣列order arr 第一...

排序演算法系列 氣泡排序

氣泡排序是是一種比較基礎簡單的演算法。它的原理是通過對比前後的元素大小,將較大的數換到後面的方式來實現排序 舉個例子 假如現在有乙個無序陣列disorder arr 4,2,19,10,1 第一步 取第0個元素4,和第1個元素2 對比,發現4比2大。第二步 交換4與2的索引。即第0個元素為2,第1個...

排序演算法系列 氣泡排序

對陣列array n 其陣列長度為n,元素索引0 n 1,對其進行公升序排序,針對n 10時,可選擇氣泡排序 氣泡排序要點 1.氣泡排序有兩層迴圈,外層迴圈用來計算有多少個數i不再需要比較,記憶體迴圈負責從index0 index n i 1 將相鄰元素進行比較和交換,簡單來說,第一輪排序時,內層比...