關於快速排序演算法的穩定性?

時間 2021-05-07 02:32:03

1樓:網際網路民工

重點在第二步:這個放是採用交換的形式,還是插入的形式;

如果是交換,則不穩定,如果是插入則穩定(不過陣列的插入本身效率低)

2樓:比特曼

按照題主的這個補充,快排可以是穩定的,取決於具體的快排演算法。

常用的比較好的快排演算法(比如高讚回答的),應用這種補充不會讓他變得穩定。但其他版本的快排(比如快排維基百科裡的簡單演算法),應用這種補充後是穩定的。

3樓:知遙其實是德魯伊

不穩定的

但其他答案說的理由似乎是不對的相同的數並不會被交換,交換pivotal的時候也沒問題。實際上問題出在這裡:

你想想從左到右比較的時候你的array可以分成這樣四部分

p | lower | higher | unvisited

p指的是pivotal,lower指小於p的部分,unvisited指還未訪問到,| 是分割線。

例如:5 | 3 1 2 | 9 7 8 9 | 4 6 3

這時遍歷unvisited部分剛到了4 (array[8])

顯然4<5 ,這是4應該從 unvisited 部分去到 lower 部分。 因此 higher部分第乙個元素 9 (array[4]) 和 4互換。變成了這樣:

5 | 3 1 24| 7 8 99| 6 3

注意!這時這個9(array[4]) 被換到了後面那個9 (array[7])的後面。

這就不穩定了。

再擴充套件來說這不穩定是由於我們在向lower部分插入元素(4)的時候使用了互換。而不是直接把插入位置後面所有元素整體往後移動一位再填進要插入的數。其實後一種辦法才是我們直覺上所說的插入但在array上實在是特別慢 O(N)。

覺得沒錯的話給個贊唄 ( . )

滑板的穩定性取決於什麼?

Looooo 廣義skateboard包含longboard,skateboard,cruiser board 直譯 長板,滑板,巡航板 國內叫法 長板,滑板 雙翹 魚板 長板和滑板 雙翹 劃分比較清晰 各有各的玩法,各有各的特點 巡航板的劃分範圍則跨越各種板型 除了魚形板以外,可以說只要把輪子換成...

關於演算法導論定理3 1,為什麼感覺快速排序的時間複雜度不滿足這個定理?

猥瑣的民工 快排無論你用什麼方法選基點,在運氣最倒霉的情況下,也就是每次選基點都剛好碰上區間內的最大或最小值的時候,複雜度提高為O n 2 是必然會發生的。儘管這種情況發生的概率極低,大約是1 n 但在你重複測試了n 次之後很可能會發生一次。 TravorLZH 對於某一種情況下 好 壞 平均 的時...

職業樂手是如何保持彈奏的穩定性

湯瑩瑩 答案是優秀的內心聽覺。內耳 是一種無聲勝有聲的能力,沒有內心聽覺很難彈出有內容的東西。節奏的穩定性不是靠保持的,一旦這個想法冒出來,已經不穩定了。 龔釗Asa 我覺得是反覆無錯誤的練習。練習的質量決定了練習量中有效練習的比例。在演奏者將情感融入演奏之前,一切訓練都是肌肉的機能訓練。想要穩定,...