位向量(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;