① 穩定的排序演算法有哪些
穩定的排序演算法:冒泡排序、插入排序、歸並排序、基數排序、計數排序。
1、冒泡排序:冒泡排序是一種基本的比較排序演算法,它通過多次遍歷數據來將較大的元素逐漸「冒泡」到數組的末尾。冒泡排序是穩定的,但在大型數據集上性能較差。
2、插入排序:插入排序是一種簡單的排序演算法,它逐個將元素插入已排序的部分。插入排序是穩定的,適用於小型數據集。
3、歸並排序:歸並排序採用分治策略,將數據分成小的部分,然後合並這些部分以獲得最終的有序數組。歸並排序是一種高效的排序演算法,而且是穩定的。
4、基數排序:基數排序是一種非比較排序演算法,它根據數字的位數來對數據進行排序。它是穩定的,特別適合對數字進行排序。
5、計數排序:計數排序是一種非比較排序演算法,它通過統計每個元素出現的次數來對數據進行排序。計數排序是穩定的,但對數據的范圍有一定要求。
不穩定的排序演算法
1、快速排序:快速排序是一種基於分治思想的排序演算法,通常通過選擇一個樞紐元素並將數據分成兩部分來實現排序。快速排序是不穩定的,因為在交換元素的過程中可能改變相等元素的相對順序。
2、堆排序:堆排序是一種基於二叉堆的排序演算法,它不保證相等元素的相對順序。在堆排序中,元素的交換可能導致相等元素之間的相對順序改變。
3、希爾排序:希爾排序是一種改進的插入排序演算法,它不保證相等元素的相對順序。希爾排序的排序過程中涉及增量,相等元素之間的相對位置可能發生變化。
4、選擇排序:選擇排序每次選擇最小(或最大)的元素並將其放在已排序部分的末尾。由於選擇排序的交換操作不是穩定的,它可能改變相等元素的相對順序。
5、希爾排序:希爾排序是一種改進的插入排序演算法,它不保證相等元素的相對順序。希爾排序的排序過程中涉及增量,相等元素之間的相對位置可能發生變化。