十大排序演算法之總結與回顧

2021-10-03 20:29:19 字數 2247 閱讀 2013

原理:比較相鄰兩元素之間的大小,若右邊的小於左邊的,則交換兩元素的順序,迴圈執行此過程,直到排序完成。

性質:穩定,時間複雜度:o(n2),空間複雜度:o(1)。

二、桶排序(bucketsort)

原理:以元素的值為座標存入相應的桶中,元素出現一次,則對應的桶的值就+1,最後按順序取出所有元素。

性質:穩定;空間複雜度:o(n+k);空間複雜度:o(n+k)

三、選擇排序(selectsort)

原理:在序列中找到最小的那個元素,把它放大到陣列的最前面,在剩下的序列中找到最小的元素,把它放到第二位,如此迴圈執行下去,直到所有元素排序完畢。

性質:不穩定;空間複雜度:o(1),時間複雜度:o(n2)

四、插入排序(insertsort)

原理:從第乙個元素開始排列,第乙個元素是有序的,然後將第二個元素插入進來,給兩個元素排序,然後將第三個元素插入進來,給他們再次排序,如此反覆執行,直到所有元素排序完畢。

性質:穩定;空間複雜度:o(1);時間複雜度:o(n2)

五、希爾排序(shellsort)

原理:對序列進行分組,以gap=size()/2為增量,對每組中的元素進行插入排序,然後將增量gap/2,對每組中的元素再次進行插入排序,知道增量等於1,排序完成。

性質:不穩定;空間複雜度o(1);時間複雜度:o(nlogn)

六、歸併排序(mergesort)

原理:採用分-治的思想,將序列中的元素採用二分法分到每組元素只有乙個,然後逐層向上合併分組,並將分組排序,知道最後排序完畢,採用遞迴的寫法,兩個函式。

性質:穩定;空間複雜度:o(n);時間複雜度:o(nlogn)

七、快速排序(quicksort)

原理:設定乙個基準值,將大於基準值得數轉移到基準值的右邊,小於基準值的元素轉移到基準值得左邊,然後分別在左右兩邊各另選乙個基準值,重複上述操作,直到i,j相遇(i,j分別為指向序列左邊和右邊的哨兵)

性質:不穩定;空間複雜度:o(logn);時間複雜度:o(nlogn)

八、計數排序(countingsort)

原理:類似於桶排序,換成了max-min+1個桶,縮小了所需要的記憶體空間。

穩定;空間複雜度:o(k);時間複雜度:o(n+k)

九、基數排序(radixsort)

原理:找出序列中最大值元素的位數,從低位到高位逐位排序。

性質:穩定;空間複雜度:o(n+k);時間複雜度:o(n*k)

十、堆排序(heapsort)

採用完全二叉樹,從低到高排序,每次都找出最大的元素,有三個函式,乙個交換兩個數的位置、第二個用來排序、第三個用來迴圈控制排序並交換頭尾值。

性質:不穩定;空間複雜度:o(1);時間複雜度:o(nlogn)

一、列表

十大排序演算法

1.非線性時間類排序 時間複雜度未突破 0 nlog 2n 不穩定的四個排序演算法 選擇排序 0 n2 希爾排序 0 n1.3 希爾排序實現python 快速排序 0 n log2 n 0 nlog 2n 0 nlog 2 n 快速排序實現c python 堆排序 0 n log2 n 0 nlog...

十大排序演算法

排序規則 從左至右依次增大 一 基於比較的排序演算法 插入排序 逐個遍歷未排序序列,將其在已排序序列中從右到左比較,直到遇到比自己小的數,然後將元素插入到那個數的後面,有序序列從左向右生長。選擇排序 在未排序序列中選擇最小的元素,將其插入到已排序序列的末尾,有序序列從左向右生長。氣泡排序 從左至右逐...

十大排序演算法

github 排序演算法是 資料結構與演算法 中最基本的演算法之一。排序演算法可以分為內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內部排序演算法有 插入排序 希爾排序 選擇排序 氣泡排序 歸併排序...