位向量(bit vector)
位向量(bit vector)是一个仅包含0和1的数组。长度为m的位向量所占空间要比包含m个指针的数组少得多。说明如何用一个位向量来表示一个包含不同元素(无卫星数据)的动态集合。字典操作运行时间应为O(1)
(算法导论第十一章11.1-2)
//里面的用循环转换了数据 这个在严格要求时间的复杂度下可以移动外部操作
int bit_search(char *array,int k)
{if(array[k]){int result = 1;while (k-->0){result *= 2;}return result;}return -1;
}
void bit_insert(char *array,int k)
{array[k] = 0x1;
}
void bit_delete(char*array,int k)
{array[k] = 0x0;
}
测试数据
int size = 10;char* array = new char [size];bit_insert(array,0);bit_insert(array,2);bit_insert(array,4);cout<<bit_search(array,4)<<endl;bit_delete(array,4);cout<<bit_search(array,4)<<endl;delete[] array;