BitSort (比特排序) 适用于非负无重复数组的排序,特别是当数组元素个数较多的时候,该排序法无论在时间还是空间上都达到了很好的效果。用很小的空间实现大量数据的排序!
算法代码:
/* 算法思想: 先将待排序非负无重复数组的各个元素映射到一段内存空间的各个bit上 (若某个bit上存在相应的元素,
* 则该bit置为1,否则置为0),再从低地址到高地址遍历这段内存的所有值为"1"的bit,并把它们转换成
* 相应的数值,即是待排序数组的升序序列。
*
* BitSort(比特排序) --> 用很小的空间实现大量整数的排序!
*/
#include <iostream>
using namespace std;
typedef unsigned int uint;
const int UINTLEN = 32;
const uint FlagSet[UINTLEN] = {
0x00000001,0x00000002,0x00000004,0x00000008,0x00000010,0x00000020,0x00000040,0x00000080,
0x00000100,0x00000200,0x00000400,0x00000800,0x00001000,0x00002000,0x00004000,0x00008000,
0x00010000,0x00020000,0x00040000,0x00080000,0x00100000,0x00200000,0x00400000,0x00800000,
0x01000000,0x02000000,0x04000000,0x08000000,0x10000000,0x20000000,0x40000000,0x80000000
};
/* "inputArr" --> 待排序非负无重