十大經典排序演算法

2021-10-25 12:22:07 字數 870 閱讀 1796

不穩定排序種類為4種:

快速排序(核心思想是partition操作+二分法分而治之),平均時間複雜度nlogn

希爾排序(高階版的插入排序,先把間隔較遠的子串行排序,最後間隔為1時,等同於插入排序(插入排序在序列有序時,時間複雜度常數級,所以先讓子串行總體有序,能有效降低時間複雜度)),平均時間複雜度n^1.3

選擇排序(每次從後面所有元素挑乙個最大/最小的元素放前面,這樣前面有序元素數量就逐漸增多,後面無序元素數量逐漸減少),平均時間複雜度n^2

堆排序(堆本質就是完全二叉樹(滿二叉樹是一種特殊的完全二叉樹),同zhankai時堆的子節點key總是小於/大於父節點(大根堆/小根堆),堆排序就是不停地用剩餘的無序元素構建小根堆/大根堆,然後不停拿走父節點(用最後乙個葉節點放到父節點位置),不停地重構堆,重複這個過程),平均時間複雜度nlogn

穩定排序有6種:

氣泡排序(每一趟冒泡把最大/最小的元素放到容器末尾),平均時間複雜度n^2

插入排序(前面有序,後面無序,每次把後面元素往前面插入),平均時間複雜度n^2,元素基本有序時,該演算法可達常數時間複雜度

歸併排序(分而治之,陣列中間分開,左右各自歸併排序,在把結果merge,merge的時候,需要比較左右佇列的有序元素),平均時間複雜度 nlogn

計數排序(統計待排序元素的最大、最小範圍,用乙個陣列作為計數工具,待排序元素值作為陣列的下標index,陣列對應該index的value作為該元素出現的次數,最後再把陣列內容平鋪展開) ,平均時間複雜度n+k,其排序速度快於任何比較排序演算法。當k不是很大並且序列比較集中時,計數排序是乙個很有效的排序演算法。

桶排序(公升級版的計數排序,利用某一hash函式,把待排序元素對映到每個桶中,然後每個桶各自排好序,在平鋪展開),時間複雜度n+k

基數排序:沒咋看

十大經典排序演算法

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

十大經典排序演算法

常見經典排序 非線性時間比較類排序 通過比較來決定元素間的相對次序,由於其時間複雜度不能突破o nlogn 因此稱為非線性時間比較類排序。線性時間非比較類排序 不通過比較來決定元素間的相對次序,它可以突破基於比較排序的時間下界,以線性時間執行,因此稱為線性時間非比較類排序。時間複雜度 空間複雜度 穩...

十大經典排序演算法

排序演算法有很多,包括插入排序,氣泡排序,堆排序,歸併排序,選擇排序,計數排序,基數排序,桶排序,快速排序等。插入排序,堆排序,選擇排序,歸併排序和快速排序,氣泡排序都是比較排序,它們通過對陣列中的元素進行比較來實現排序,其他排序演算法則是利用非比較的其他方法來獲得有關輸入陣列的排序資訊。各種排序演...