資料結構中排序方法的比較


在這裡,我們將瞭解一些排序方法。排序技術有200多種。我們將瞭解其中的一些。一些排序技術是基於比較的排序,一些是非基於比較的排序技術。

基於比較的排序技術包括氣泡排序、選擇排序、插入排序、歸併排序、快速排序、堆排序等。這些技術被認為是基於比較的排序,因為在這些技術中,值會被比較,並在不同的階段放置到排序位置。在這裡,我們將瞭解這些技術的複雜度。

分析型別氣泡排序選擇排序插入排序歸併排序快速排序堆排序
最佳情況O(n2)O(n2)O(n)O(log n)O(log n)O(logn)
平均情況O(n2)O(n2)O(n2)O(log n)O(log n)O(log n)
最壞情況O(n2)O(n2)O(n2)O(log n)O(n2)O(log n)

一些排序演算法是非基於比較的演算法。其中一些是基數排序、桶排序、計數排序。這些是非基於比較的排序,因為在排序時不會比較兩個元素。這些技術的實現方式略有不同。現在我們將根據不同型別的分析來了解它們之間的區別。

分析型別基數排序(k是最大位數)計數排序(k是計數陣列的大小)桶排序(k是桶的數量)
最佳情況O(nk)O(n + k)O(n + k)
平均情況O(nk)O(n + k)O(n + k)
最壞情況O(nk)O(n + k)O(n2)

排序技術也可以使用其他一些引數進行比較。一些排序演算法是原地排序演算法,一些是非原地排序演算法。那些不需要任何額外空間的演算法稱為原地排序演算法。例如,快速排序和堆排序是原地排序演算法。但歸併排序是非原地排序技術。

一些演算法是線上演算法,一些是離線演算法。如果演算法在排序過程中接受新元素,則稱為線上排序演算法。在上面提到的技術中,插入排序是線上排序技術。

更新於: 2019年8月27日

6K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告