使用位逻辑运算实现位向量,并实现大数据排序
2017-02-07 22:28
399 查看
首先,先把这些数据实现位向量:
该例中数据类型为int,且为32位
#define BITSPERWORD 32
#define SHIFT 5
#define MASK 0x1f
#define N 10000000
int a[1+N/BITSPERWOED];
把其对应位置0:
void clr(int i)
{
a[i>>SHIFT] &= ~(1<<(i&MASK));
}
把其对应位置1:
void set(int i)
{
a[i>>SHIFT] |= (1<<(i&MASK));
}
查询对应位是否为1:
int test(i)
{
return(a[i>>SHIFT] &(1<<(i&MASK));
}
然后将其运用到大数据的排序中,现将数据置于位图中,然后遍历打印,如果有重复数据则需要再用一个数组进行标记,打印时候考虑重复
1,for(i=0,N)
if(!test(i))
set(i)
2,for(t = 0, N)
if(test(t))
printf();
具体实现代码可以参考其他人的代码http://blog.csdn.net/txgc0/article/details/8676068
该例中数据类型为int,且为32位
#define BITSPERWORD 32
#define SHIFT 5
#define MASK 0x1f
#define N 10000000
int a[1+N/BITSPERWOED];
把其对应位置0:
void clr(int i)
{
a[i>>SHIFT] &= ~(1<<(i&MASK));
}
把其对应位置1:
void set(int i)
{
a[i>>SHIFT] |= (1<<(i&MASK));
}
查询对应位是否为1:
int test(i)
{
return(a[i>>SHIFT] &(1<<(i&MASK));
}
然后将其运用到大数据的排序中,现将数据置于位图中,然后遍历打印,如果有重复数据则需要再用一个数组进行标记,打印时候考虑重复
1,for(i=0,N)
if(!test(i))
set(i)
2,for(t = 0, N)
if(test(t))
printf();
具体实现代码可以参考其他人的代码http://blog.csdn.net/txgc0/article/details/8676068
相关文章推荐
- 使用位逻辑运算实现位向量
- 【EntityFramework系列教程三,翻译】在ASP.NET MVC程序中使用EntityFramework对数据进行排序、过滤筛选以及实现分页
- Berkeley DB使用SecondKey给数据排序的实现方法
- 使用UILocalizedIndexedCollation实现区域索引排序 及 不显示没有数据的区域
- 使用类的重载实现不同数据类型之间的运算
- 如何使用为逻辑运算实现位向量(PROGRAMMING PEARLS)
- 【C语言】使用回调函数实现一个通用的冒泡排序,可以排序不同的数据类型。
- WPF and Silverlight 学习笔记(二十五):使用CollectionView实现对绑定数据的排序、筛选、分组
- 使用位逻辑运算来实现位向量
- 使用位逻辑运算实现位向量(位图)
- [转]WPF and Silverlight 学习笔记(二十五):使用CollectionView实现对绑定数据的排序、筛选、分组
- WPF and Silverlight 学习笔记(二十五):使用CollectionView实现对绑定数据的排序、筛选、分组
- 使用位逻辑运算实现位向量
- [EXPDP]使用11g的数据泵实现对逻辑备份数据进行加密
- 使用位逻辑运算实现位向量
- <<编程珠玑>>笔记之使用位逻辑运算来实现位向量
- C#拼接SQL语句,SQL Server 2005+,多行多列大数据量情况下,使用ROW_NUMBER实现的高效分页排序
- [C++]使用位逻辑运算来实现位向量的理解
- 在 Laravel 5 中使用 Repository 模式实现业务逻辑和数据访问的分离
- 位向量实现文件中数据排序