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

穩定排序演算法

發布時間: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

閱讀全文

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

熱點內容
伺服器一直崩應該用什麼指令 瀏覽:916
cm202貼片機編程 瀏覽:724
php構造函數帶參數 瀏覽:175
解壓電波歌曲大全 瀏覽:336
為啥文件夾移到桌面成word了 瀏覽:858
命令符的安全模式是哪個鍵 瀏覽:758
編程中學 瀏覽:956
單片機求助 瀏覽:993
ug加工側面排銑毛坯怎麼編程 瀏覽:271
程序員有關的介紹 瀏覽:736
支付寶使用的什麼伺服器 瀏覽:210
安卓看本地書用什麼軟體好 瀏覽:921
經傳軟體滾動凈利潤指標源碼 瀏覽:522
螢石雲視頻已加密怎麼解除 瀏覽:574
一命令四要求五建議 瀏覽:30
qq文件夾遷移不了 瀏覽:19
液體粘滯系數測定不確定度演算法 瀏覽:332
輕棧源碼 瀏覽:426
把圖片壓縮到500k 瀏覽:35
命令你自己 瀏覽:369