1、位向量表示0~N的整数
在普通机器上,一个int型整数有4个字节,共32位,我们可以通过这32位中不同的位来表示不同的整数;
创建一个数组array[100],利用类的概念,array[0]存放32个除32等于0的整数,它的模数在32位中的相应位表示,相应的array[1]存放除32等于1的整数;
如:
int i = 5; // 5/32 = 0; 5%32 = 5
int j = 12; // 12/32 = 0; 12%32 = 12
int k = 31; // 31/32 = 0; 31%32 = 31
int m = 34; // 34/32 = 1; 34%32 = 2
int n = 40; // 40/32 = 1; 40%32 = 8
此时,这5个数在array中的存储就应该是下面这种情况:
array[0] = 0000 0100 0000 1000 0000 0000 0000 0001b
array[1] = 0010 0000 1000 0000 0000 0000 0000 0000b
array[2] = ... = array[99] = 0
模数在相应的位将0置为1,这样就可以表示相应的整数了;
2、位向量排序
int main(void)
{
int i;
for(i = 0;i < N;i++)
c