導航:首頁 > 源碼編譯 > 穩定排序演算法

穩定排序演算法

發布時間:2022-01-22 11:43:44

A. 那些哪些排序演算法是穩定的內在的

希爾排序、堆排序: 就地的不穩定排序
快速排序: 非就地的不穩定排序
選擇排序: 不穩定排序
插入排序: 穩定排序

B. 下列排序演算法中,()是穩定的 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

C. 排序演算法的穩定性有什麼意義

當然是穩定的好。。

穩定意思是說原本鍵值一樣的元素排序後相對位置不變

學習的時候,可能編的程序裡面要排序的元素都是簡單類型,實際上真正使用的時候,可能是對一個復雜類型的數組排序,而排序的鍵實際上只是這個元素中的一個屬性,對於一個簡單類型,數字值就是其全部意義,即使交換了也看不出什麼不同。。。但是對於復雜的類型,交換的話可能就會使原本不應該交換的元素交換了。。

比如,一個「學生」數組,按照年齡排序,「學生」這個對象不僅含有「年齡」,還有其他很多屬性,穩定的排序會保證比較時,如果兩個學生年齡相同,一定不交換。

D. 排序演算法穩定性的判斷方法

對於不穩定的排序演算法,只要舉出一個實例,即可說明它的不穩定性;而對於穩定的排序演算法,必須對演算法進行分析從而得到穩定的特性。需要注意的是,排序演算法是否為穩定的是由具體演算法決定的,不穩定的演算法在某種條件下可以變為穩定的演算法,而穩定的演算法在某種條件下也可以變為不穩定的演算法。
例如,對於如下起泡排序演算法,原本是穩定的排序演算法,如果將記錄交換的條件改成r[j]>=r[j+1],則兩個相等的記錄就會交換位置,從而變成不穩定的演算法。
void BubbleSort(int r[ ], int n){
exchange=n; //第一趟起泡排序的范圍是r[1]到r[n]
while (exchange) //僅當上一趟排序有記錄交換才進行本趟排序
{
bound=exchange; exchange=0;
for (j=1; j if (r[j]>r[j+1]) {
r[j]←→r[j+1];
exchange=j; //記錄每一次發生記錄交換的位置
}
}
}
再如,快速排序原本是不穩定的排序方法,但若待排序記錄中只有一組具有相同關鍵碼的記錄,而選擇的軸值恰好是這組相同關鍵碼中的一個,此時的快速排序就是穩定的。

E. 關於排序演算法的穩定性

假定在待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序,這些記錄的相對次序保持不變,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序後的序列中,r[i]仍在r[j]之前,則稱這種排序演算法是穩定的;否則稱為不穩定的。

即可說明它的不穩定性;而對於穩定的排序演算法,必須對演算法進行分析從而得到穩定的特性。需要注意的是,排序演算法是否為穩定的是由具體演算法決定的,不穩定的演算法在某種條件下可以變為穩定的演算法,而穩定的演算法在某種條件下也可以變為不穩定的演算法。



(5)穩定排序演算法擴展閱讀:

基數排序按照低位先排序,然後收集;再按照高位排序,然後再收集;依次類推,直到最高位。有時候有些屬性是有優先順序順序的。

先按低優先順序排序,再按高優 先級排序,最後的次序就是高優先順序高的在前,高優先順序相同的低優先順序高的在前。基數排序基於分別排序,分別收集,所以其是穩定的排序演算法。

F. 穩定的排序演算法有哪些

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)

G. 什麼是穩定的排序方法

所謂穩定的排序演算法就是你排序之後相同大小的數值沒有發生變化,比如: 2 4 4 1 6 3 排序之後第二4的位置依然在一個4之後就是他們兩個沒有發生位置變化;稱之為穩定;

H. 排序演算法的穩定性

常用的幾種排序演算法中,穩定的排序有,冒泡排序,插入排序,歸並排序,不穩定的排序有選擇排序希爾排序,快速排序,堆排序,二叉排序樹排序,等等。

I. 下列排序演算法中,其中()是穩定的

A,堆不穩定
B,快速
C,選擇不一定
選D

閱讀全文

與穩定排序演算法相關的資料

熱點內容
java數據結構與演算法面試題 瀏覽:977
解壓不了是什麼意思 瀏覽:359
紐西蘭編程師年薪 瀏覽:321
程序員為什麼大多生閨女 瀏覽:51
c編程用英文還是中文 瀏覽:723
一點都不解壓的游戲 瀏覽:203
解壓為什麼不能用中文文件夾 瀏覽:615
伺服器如何解除備份 瀏覽:144
安卓手機為什麼用一年就變卡 瀏覽:11
如何用風變編程自動回復 瀏覽:512
安卓閱讀幣怎麼樣 瀏覽:437
京東app怎麼切號 瀏覽:583
進入傳奇伺服器後如何修改 瀏覽:42
m0單片機的cycle怎麼知道 瀏覽:806
linux命令太長 瀏覽:782
壓縮機nb1111y是多少w 瀏覽:45
打賞視頻用什麼伺服器好 瀏覽:154
方舟好友伺服器怎麼加mod 瀏覽:982
javaresponse設置編碼 瀏覽:842
opc數據採集源碼 瀏覽:563