一.定义:
基数排序又称桶排序。
基数排序与本系列前面讲解的七种排序方法都不同,它不需要比较关键字的大小。
它是根据关键字中各位的值,通过对排序的N个元素进行若干趟“分配”与“收集”来实现排序的。
二.算法描述(LSD次位优先实现):
基数排序(以整形为例),将整形10进制按每位拆分,然后从低位到高位依次比较各个位。主要分为两个过程:
1. 分配,先从个位开始,根据位值(0-9)分别放到0~9号桶中(比如53,个位为3,则放入3号桶中)。
2. 收集,再将放置在0~9号桶中的数据按顺序放到数组中。
重复(1)(2)过程,从个位到最高位(比如32位无符号整形最大数4294967296,最高位10位)。
三.代码实现(LSD次位优先实现):
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
#define OK 1
#de