1.位操作的应用:关于位图排序。
一、关于运用条件,必须是正整数,并且每个元素不重复,可以确定最大范围。
解题思路:通过最大范围确定数组长度,每个整型数据为4个字节,每个整型就是32位。如题:该题数值范围为(0,64),所以申请
两个整型的数组,通过位移来给对应位置置一,然后通过循环来判对应位置是否为一,然后打印。
int main(int argc, char * argv[])
{
int a[10] = {10,30,25,32,33,36,29,27,34,35};
int bitmap[2] = {0};
int i = 0;
//在第i个位置上写1
for (i = 0; i < 10; i++)
bitmap[a[i] / 32] |= (1 << (a[i] % 32));
for (i = 0; i < 64; i++)
{
if ((bitmap[i / 32] >> (i % 32)) & 1)
printf("%d ",i);
}
printf("\n");
return 0;
}