当前位置: 代码迷 >> Java相关 >> 关于基数排序最坏空间复杂度,该如何处理
  详细解决方案

关于基数排序最坏空间复杂度,该如何处理

热度:4976   发布时间:2013-02-25 21:42:03.0
关于基数排序最坏空间复杂度
http://en.wikipedia.org/wiki/Radix_sort

谁能说说基数排序为何最坏空间复杂度是O(kn),时间复杂度是O(kn)能明白。

http://wenku.baidu.com/view/dd4d6817866fb84ae45c8d3c基数排序的方式可以采用LSD(Least significant digital)或MSD(Most significant digital),LSD的排序方式由键值的最右边开始,而MSD则相反,由键值的最左边开始。 
以LSD为例,假设原来有一串数值如下所示: 
73, 22, 93, 43, 55, 14, 28, 65, 39, 81 
首先根据个位数的数值,在走访数值时将它们分配至编号0到9的桶子中: 

1 81 
2 22 
3 73 93 43 
4 14 
5 55 65 


8 28 
9 39 
接下来将这些桶子中的数值重新串接起来,成为以下的数列: 
81, 22, 73, 93, 43, 14, 55, 65, 28, 39 
接着再进行一次分配,这次是根据十位数来分配: 

1 14 
2 22 28 
3 39 
4 43 
5 55 
6 65 
7 73 
8 81 
9 93 
接下来将这些桶子中的数值重新串接起来,成为以下的数列: 
14, 22, 28, 39, 43, 55, 65, 73, 81, 93
每一次都要保存待排数值,n是排序元素个数,k是数字位数,空间复杂度最坏最好都是O(kn)吧好吧,我没看懂的说,帮顶!