基数排序:
假如直到某个长度为n的序列中所有记录的值都在0~m-1之间。当值域m很大时可以对桶式排序做一些改进:将排序码(待排数据)拆分成多个部分进行比较。例如,如果要对0~9999之间的整数进行排序,可以先按千、百、十、个位拆分。这种将排序码按照其进制数的基数进行拆分排序的方法就是基数排序,是分配排序的一种特例。
低位优先法(least significant digit first,LSD)分配排序
从最低位K0开始排序,对于排好的序列再用次低位K1排序,依次重复,直至对最高位Kd-1排好序后,整个序列成为有序的。这是一个分、收;分、收;......;分,收的过程。
链式存储的LSD
这部分要用文字表述过于复杂,SO,直接上图.....
初始序列 |
64 |
8 |
216 |
512 |
27 |
729 |
0 |
1 |
343 |
125 |
Bucket |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |