天天看點

計數排序

<b>閱讀目錄</b>

<a href="http://www.cnblogs.com/kaituorensheng/archive/2013/02/23/2923877.html#_label0">基本思想</a>

<a href="http://www.cnblogs.com/kaituorensheng/archive/2013/02/23/2923877.html#_label1">參考代碼</a>

<a href="http://www.cnblogs.com/kaituorensheng/archive/2013/02/23/2923877.html#_label2">圖示</a>

假設數序列中小于元素a的個數為n,則直接把a放到第n+1個位置上。當存在幾個相同的元素時要做适當的調整,因為不能把所有的元素放到同一個位置上。計數排序假設輸入的元素都是0到k之間的整數。

計數排序
計數排序

對于資料2 5 3 0 2 3 0 3程式執行的過程如下圖所示:

計數排序
計數排序
計數排序
計數排序

      現在有個問題,若必須是0到n的自然數,是不是用途很小?我想了想,其實可以任意整數的,即找出最小的數來,看看與0的距離d,把所有的數同時減去d,劃到0到n的範圍内,計數排序。到最後待恢複就可以了。

本文轉自jihite部落格園部落格,原文連結:http://www.cnblogs.com/kaituorensheng/archive/2013/02/23/2923877.html,如需轉載請自行聯系原作者

繼續閱讀