Ⅰ 什麼是穩定的排序方法
所謂穩定的排序演算法就是你排序之後相同大小的數值沒有發生變化,比如:
2
4
4
1
6
3
排序之後第二4的位置依然在一個4之後就是他們兩個沒有發生位置變化;稱之為穩定;
Ⅱ 數據結構裡面什麼是穩定的排序,什麼是不穩定的排序,怎麼看,什麼是穩定性
就是說在配需前後,各個關鍵字的相對位置不變。
舉個例子來說吧,假設在排序前數據排列如下:
排序前:5,6(1),1,4,3,6(2),(第一個6在第二個6之前)
排序後:1)如果排序後的結果是1,2,3,4,5,6(1),6(2)那麼就說此排序算 法是穩定的,即使穩 定的排序。
2)如果排序後的結果是1,2,3,4,5,6(2),6(1),即6(1)和6(2)相比較排序前
他們的相對順序改變了(第二個6排到第一個6之前了),那麼就說這次排序是不穩定的 排序
像快速排序、希爾排序等演算法都是不穩定排序演算法,冒泡排序、插入排序等演算法是穩定的排序演算法。
希望對你有幫助哦~~
Ⅲ 數據結構的排序演算法中,哪些排序是穩定的,哪些排序是不穩定的
一、穩定排序演算法
1、冒泡排序
2、雞尾酒排序
3、插入排序
4、桶排序
5、計數排序
6、合並排序
7、基數排序
8、二叉排序樹排序
二、不穩定排序演算法
1、選擇排序
2、希爾排序
3、組合排序
4、堆排序
5、平滑排序
6、快速排序
排序(Sorting) 是計算機程序設計中的一種重要操作,它的功能是將一個數據元素(或記錄)的任意序列,重新排列成一個關鍵字有序的序列。
一個排序演算法是穩定的,就是當有兩個相等記錄的關鍵字R和S,且在原本的列表中R出現在S之前,在排序過的列表中R也將會是在S之前。
不穩定排序演算法可能會在相等的鍵值中改變紀錄的相對次序,但是穩定排序演算法從來不會如此。不穩定排序演算法可以被特別地實現為穩定。
做這件事情的一個方式是人工擴充鍵值的比較,如此在其他方面相同鍵值的兩個對象間之比較,就會被決定使用在原先數據次序中的條目,當作一個同分決賽。然而,要記住這種次序通常牽涉到額外的空間負擔。
(3)排序演算法哪個是穩定的擴展閱讀:
排序演算法的分類:
1、通過時間復雜度分類
計算的復雜度(最差、平均、和最好性能),依據列表(list)的大小(n)。
一般而言,好的性能是 O(nlogn),且壞的性能是 O(n^2)。對於一個排序理想的性能是 O(n)。
而僅使用一個抽象關鍵比較運算的排序演算法總平均上總是至少需要 O(nlogn)。
2、通過空間復雜度分類
存儲器使用量(空間復雜度)(以及其他電腦資源的使用)
3、通過穩定性分類
穩定的排序演算法會依照相等的關鍵(換言之就是值)維持紀錄的相對次序。
Ⅳ 排序演算法的穩定性
常用的幾種排序演算法中,穩定的排序有,冒泡排序,插入排序,歸並排序,不穩定的排序有選擇排序希爾排序,快速排序,堆排序,二叉排序樹排序,等等。
Ⅳ 在快速排序、堆排序、歸並排序中,什麼排序是穩定的
歸並排序是穩定的「快速排序和堆排序都不穩定.不穩定:就是大小相同的兩個數,經過排序後,最終位置與初始位置交換了。
快速排序:
27 23 27 3
以第一個27作為pivot中心點,則27與後面那個3交換,形成
3 23 27 27,排序經過一次結束,但最後那個27在排序之初先於初始位置3那個27,所以不穩定。
堆排序:
比如:3 27 36 27,
如果堆頂3先輸出,則,第三層的27(最後一個27)跑到堆頂,然後堆穩定,繼續輸出堆頂,是剛才那個27,這樣說明後面的27先於第二個位置的27輸出,不穩定。」
「2 歸並排序(MergeSort)
歸並排序先分解要排序的序列,從1分成2,2分成4,依次分解,當分解到只有1個一組的時候,就可以排序這些分組,然後依次合並回原來的序列中,這樣就可以排序所有數據。合並排序比堆排序稍微快一點,但是需要比堆排序多一倍的內存空間,因為它需要一個額外的數組。」
Ⅵ 穩定的排序演算法有哪些
1.穩定的排序
冒泡排序(bubble sort) — O(n2)
雞尾酒排序 (Cocktail sort, 雙向的冒泡排序) — O(n2)
插入排序 (insertion sort)— O(n2)
桶排序 (bucket sort)— O(n); 需要 O(k) 額外 記憶體
計數排序 (counting sort) — O(n+k); 需要 O(n+k) 額外 記憶體
歸並排序 (merge sort)— O(n log n); 需要 O(n) 額外記憶體
原地歸並排序 — O(n2)
二叉樹排序 (Binary tree sort) — O(n log n); 需要 O(n) 額外記憶體
鴿巢排序 (Pigeonhole sort) — O(n+k); 需要 O(k) 額外記憶體
基數排序 (radix sort)— O(n·k); 需要 O(n) 額外記憶體
Gnome sort — O(n2)
Library sort — O(n log n) with high probability, 需要 (1+ε)n 額外記憶體
2.不穩定的排序
選擇排序 (selection sort)— O(n2)
希爾排序 (shell sort)— O(n log n) 如果使用最佳的現在版本
Comb sort — O(n log n)
堆排序 (heapsort)— O(n log n)
Smoothsort — O(n log n)
快速排序 (quicksort)— O(n log n) 期望時間, O(n2) 最壞情況; 對於大的、亂數串列一般相信是最快的已知排序
Introsort — O(n log n)
Patience sorting — O(n log n + k) 最外情況時間, 需要 額外的 O(n + k) 空間, 也需要找到最長的遞增子序列(longest increasing subsequence)
Ⅶ 下列排序演算法中,()是穩定的 a.插入,希爾 b.冒泡,快速 c.選擇,堆排序 d.基數,歸並
另外一個答案不靠譜啊
正確答案應該是D
對基數排序:
A least significant digit (LSD) radix sort is a fast stable sorting algorithm which can be used to sort keys in integer representation order.
對歸並排序:
In computer science, merge sort (also commonly spelled mergesort) is an O(n log n) comparison-based sorting algorithm. Most implementations proce a stable sort, which means that the implementation preserves the input order of equal elements in the sorted output.
來源Wiki
Ⅷ 那些哪些排序演算法是穩定的內在的
希爾排序、堆排序: 就地的不穩定排序
快速排序: 非就地的不穩定排序
選擇排序: 不穩定排序
插入排序: 穩定排序
Ⅸ 數據結構的排序演算法中,哪些排序是穩定的,哪些排序是不穩定的
快速排序、希爾排序、堆排序、直接選擇排序不是穩定的排序演算法。
基數排序、冒泡排序、直接插入排序、折半插入排序、歸並排序是穩定的排序演算法。
Ⅹ 在快速排序、堆排序、歸並排序中,什麼排序是穩定的
歸並排序是穩定的排序演算法。
歸並排序的穩定性分析:
歸並排序是把序列遞歸地分成短序列,遞歸出口是短序列只有1個元素或者2個序列,然後把各個有序的段序列合並成一個有序的長序列,不斷合並直到原序列全部排好序。
可以發現,在1個或2個元素時,1個元素不會交換,2個元素如果大小相等,沒有外部干擾,將不會破壞穩定性。
那麼,在短的有序序列合並的過程中,穩定性是沒有受到破壞的,合並過程中如果兩個當前元素相等時,把處在前面的序列的元素保存在結果序列的前面,這樣就保證了穩定性。所以,歸並排序也是穩定的排序演算法。
(10)排序演算法哪個是穩定的擴展閱讀:
演算法穩定性的判斷方法:
在常見的排序演算法中,堆排序、快速排序、希爾排序、直接選擇排序是不穩定的排序演算法,而基數排序、冒泡排序、直接插入排序、折半插入排序、歸並排序是穩定的排序演算法。
對於不穩定的排序演算法,只要舉出一個實例,即可說明它的不穩定性;而對於穩定的排序演算法,必須對演算法進行分析從而得到穩定的特性。
需要注意的是,排序演算法是否為穩定的是由具體演算法決定的,不穩定的演算法在某種條件下可以變為穩定的演算法,而穩定的演算法在某種條件下也可以變為不穩定的演算法。
比如,快速排序原本是不穩定的排序方法,但若待排序記錄中只有一組具有相同關鍵碼的記錄,而選擇的軸值恰好是這組相同關鍵碼中的一個,此時的快速排序就是穩定的。
參考資料來源:網路-排序演算法穩定性