位图排序
时间:2011-01-06 来源:donotblock
时间复杂度O(n), 空间几乎是O(1),空间需求很低
假定int的长度是32位,即一个int可以编码32个数字(简单起见,一个bit代表一个数字,实际可以编码的范围就是unsigned int的最大值,但计算比较复杂), 那么0到n之间的数字就可以用最多n/32+1个整形表示,每个int的每个bit代表一个数。。
#include <stdio.h> |
常用bit操作: 第n位置1:
value &= ~(1 << n); |
第n位清0:
value &= ~(1 << n); |
第n位反转:
value ^= 1 << n; |
检查第n位是否为1:
bit = value & (1 << n); |