為什麼基數排序只有從最低位開始才是「穩定的排序演算法」??

時間 2021-05-30 22:26:44

1樓:youw3

LSD的思路在於經過低位排序之後,更高位相同的數之間的相對順序不會再發生變化了。例如 「13,12,21」經過個位排序之後為「21,12,13「,其中具有相同十位數字的」12,13「的順序是最終排序結果的順序,而21的位置則需要十位排序那一趟才能確定。

2樓:

通常基數排序演算法是自右向左的,學術上稱之為「最低位優先(Least significant digital,LSD)」,能保證基數排序是穩定的,高位優先也能保證穩定。

最高位優先的問題:麻煩,如果數字從高位開始排序,意味著有n位,就得有10^n個桶。從高位排序要從大桶裡面繼續分小桶,所以寫法跟低位的不一樣,可以用遞迴。

3樓:秋葉

最高位開始可以。只是排完第一位數時,數字分到了幾個容器中,必須再分別排每個容器中的數,把每個容器中的數字拿出來再按次最高位排,如此遞迴下去,直到每個容器中只有乙個數字後,在合併結果(這個過程類似於歸併排序)。而按最低位的話,就可以直接把每個容器中的數字按順序疊放在一起,排次一位的,不用再分開排,後合併了。

穩定的話,指的是每一位數排序必須穩定,即是從容器中拿出來時按容器順序疊放,這保證排序的正確性。書中規定是基數排序是按最低位排,只是一種定義,這樣操作比較簡單。

4樓:高雲璐

我是這麼理解的:基數排序,又稱為bucket sort,因為Hollerith當時的人們是拿著真的桶進行排序的。如果數字從高位開始排序,意味著有n位,就得有10^n個桶。

因為你先排最高位,然後對於這個最高位又要分出十個桶排下一位。比如現在有13,23,12,22,11這五個數。你先為高位排序,就相當於把十位為1的分在乙個桶1裡(13,12,11),十位為2的分在乙個桶2(22,23)裡。

然後在桶1和桶2之中剩下的元素排序((11),(12),(13))和((22),(23))。這樣如果有很多位數,桶就很多。但是從最低位開始排就只需要10個桶,每移動一位,就用針對那一位排序(把元素扔進桶裡)。

所以不會占用大量的桶。所以,低位排序優於高位排序。

5樓:

必須從低位開始,因為每趟都是對整個全集排序;另外,每趟排序必須使用穩定的排序演算法(比如bucket sort 或 merge so)。

如果先對高位排,每趟就必須對已排好的高位相同的子串行排序,此時可以用不穩定的排序演算法(例如quick sort),但是,這樣就必須先找到高位不同的那些子串行的邊界,從而降低效能。

6樓:M Hello

樓主別被某些答案誤導了,LSD和MSD都是沒問題,不過從高位排序要從大桶裡面繼續分小桶,所以寫法跟低位的不一樣,要用遞迴。

兩者應該都是穩定的,樓主可能理解錯了原文吧

7樓:Mannix Fan

我的理解是,高位的數字的大小相對於低位,可以決定性的比較2個數的大小。就是乙個數字a高位比另外乙個數字b大那a就一定比b大,低位則無法保證。所以,從低到高為必要條件。

例如12和21,從高到低排就錯了。

而當高位數字相等時,就需要低位去比較兩者大小。所以要用穩定排序,不穩定的話無法保證正確的排序。如12和13,個位排序完,13是在12後面的,如果是穩定排序,十位排序時,13還是在12後面。

反之不穩定的排序則無法保證正確的順序。所以,穩定的排序也是必要條件。得證。

8樓:

RADIX-SORT(A,d)

for i <- 1 to d

do use a stable sort to sort array A on digit i

22 31 13 從小到大排序

從高位第一次:13 22 31,第二位:31 22 13 錯了從低位第一次:31 22 13,第二次:13 22 31 對的

為什麼只有噁才是最真實的?

noname 是不是你覺得,就因為作惡是最輕鬆不累人 人性最自然的選擇 最利己所以愉悅的,就是 最真實的 推測,你也可能用同樣思維模式,認為行善很累 要犧牲自我成全別人 還不一定有現世好報,所以 不真實 這個物質世界真實嗎?萬物歷歷在目,夠真實,是吧?可是無時無刻不在變化之中,三十年河東三十年河西,...

為什麼國產RPG單機只有仙劍奇俠傳做的最好?

喵小魚 軒轅劍系列的巔峰不因該是雲和山的彼端,天之痕和蒼之濤麼。至於仙劍系列,其實就贏在一代太讓人印象深刻,所以群眾基礎廣。其實純論劇情來看,軒轅劍的劇情更加大氣磅礴 這也是為什麼十多年後仍然會翻出來雲和山的彼端 天之痕出來玩的原因。要是論兒女情長,其實幻想三國志系列的劇情做的也很棒,尤其是二代至今...

為什麼現在女生談戀愛的時候從最開始談戀愛就沒有想過最後再一起?

匿名 沒有吧,我就是從一開始就覺得我是要和我男朋友結婚的啊,他也是。你女朋友可是是因為覺得還沒有到談婚論嫁的程度吧。如果你真的是對她很好,兩個人也比較合適,她會考慮結婚這種事情。當然不排除她只是想享受戀愛的過程,不考慮以後。題主應該有自己的判斷。畢竟你女朋友對你怎麼樣只有你自己知道,和別人是怎麼都沒...