我明白了32位整數被分解爲8位塊。有人能給我一些關於傳球如何運作的更多解釋嗎?一個簡單的例子會幫助我更好地理解它。作爲一個例子,我有2147507648和2147507672.我把它們分解成8位塊。 128 0 093 216是細分爲2147507672和128 0 093 192細分爲2147507648.基數排序如何爲32位(或更高)整數排序工作?
我明白LSD基數排序如何用於基數10.我將不勝感激,如果有人能告訴我排序如何工作這些32位整數後,我得到了8位塊。
非常感謝!
我明白了32位整數被分解爲8位塊。有人能給我一些關於傳球如何運作的更多解釋嗎?一個簡單的例子會幫助我更好地理解它。作爲一個例子,我有2147507648和2147507672.我把它們分解成8位塊。 128 0 093 216是細分爲2147507672和128 0 093 192細分爲2147507648.基數排序如何爲32位(或更高)整數排序工作?
我明白LSD基數排序如何用於基數10.我將不勝感激,如果有人能告訴我排序如何工作這些32位整數後,我得到了8位塊。
非常感謝!
在跳進Radix Sort
之前,您是否完全熟悉Counting Sort
?
如果您瞭解Counting Sort
,那麼您很容易就會意識到Radix Sort的工作原理,並且能夠自己實現它。
你需要知道的另外一些事情是跟蹤數字的頻率,然後計算累積頻率。累積頻率決定了最終排序數組中第th個元素的位置。
後面上的一組號碼的基數排序的總體思路是寫在一些數量的基極b的數量,然後一次處理數字一基-B數字。如果你對base-10基數排序感到滿意,那麼調整算法以在其他基地工作並不是太多工作。
作爲一個例子,假設我們想要做一個基二(二進制)基數排序。在這種情況下,我們會以基數2(二進制)編寫數字。我們有兩個桶,而不是有十個桶。我們不一次一個地查看數字的數字,而是每次查看數字的位數。除此之外,該算法與基數10基本相同。
當你把這個數字分成8位組時,你可以考慮你在編寫基數爲256的數據。爲什麼?那麼,以類推的方式推理,假設你採用基數爲10的基數排序(你慣用的排序),而不是有10個桶,你有100個桶。然後,不是一次處理一位數字,而是一次處理兩位數字。這仍然正常工作(我希望你明白爲什麼!)並且不太難實現。此過程與使用基本100基數排序完全相同 - 通過將相鄰的基數爲10的數字分組在一起,形成基數爲100的數字。作爲另一個例子,將數字分組爲三分之一給出base-1000基數排序。現在讓我們回到二進制。每一位都是以2位數爲基數。一組兩位可以被認爲是基數4位。一組四位可以被認爲是基數爲16位,並且一組八位因此形成基數爲256位。
所以,要回答你的問題,從基數爲10的基數排序基數中排序的8位數據塊的方法是考慮你正在做什麼,以base 256基數排序,然後相應地實現算法。
是的,我通過簡單的例子來理解它:-)。我只想了解它背後的數學運作。我只是瞭解一些基於比較的排序算法。我會盡力在稍後做實施。 –
基數排序基本上是根據數字*,數十,數百*位置 –
-1重複應用於數字,這應該是一個評論。它沒有包含任何有關任何排序的真實信息,只是一個關於計數的解釋鏈接,從計數到基數仍然有一個不平凡的步驟,您不需要解釋。預計SO也至少會將鏈接中的要素複製到您的答案中,因爲未來某個時候視頻不會出現故障。 – KillianDS