2-bitmap 算法,可解决海量数据问题,减少内存使用
2012-08-15 15:54
519 查看
#include "stdafx.h" #include <iostream> #include <memory.h> using namespace std; unsigned char flags[1000]; unsigned get_val(int idx) { int i = idx / 4; int j = idx % 4; unsigned ret = (flags[i]&(0x3<<(2*j))) >> (2*j); return ret; } unsigned set_val(int idx, unsigned int val) { int i = idx/4; int j = idx%4; unsigned tmp = (flags[i]&~((0x3<<(2*j))&0xff)) | (((val%4)<<(2*j))&0xff); flags[i] = tmp; return 0; } unsigned add_one(int idx) { if (get_val(idx)>=2) { return 1; } else { set_val(idx, get_val(idx)+1); return 0; } } int a[]={1, 3, 5, 7, 9, 1, 3, 5, 7, 1, 3, 5,1, 3, 1,10,2,4,6,8,0}; int _tmain(int argc, _TCHAR* argv[]) { int i; memset(flags, 0, sizeof(flags)); printf("原数组为:\n"); for(i=0;i < sizeof(a)/sizeof(int); ++i) { printf("%d ", a[i]); add_one(a[i]); } printf("\r\n"); for(i=0;i < sizeof(a)/sizeof(int); ++i) { printf("%d ", a[i]); add_one(a[i]); } printf("只出现过一次的数:"); for(i=0;i < 100; ++i) { if(get_val(i) == 1) printf("%d ", i); } printf("\r\n"); return 0; }2-bitmap 算法可以用于处理海量数据
相关文章推荐
- android中使用SoftRefrence解决Bitmap过大内存溢出问题
- Android使用BitmapFactory.Options解决加载大图片内存溢出问题
- Android使用BitmapFactory.Options解决加载大图片内存溢出问题
- android中使用SoftRefrence解决Bitmap过大内存溢出问题
- Android使用BitmapFactory.Options解决加载大图片内存溢出问题
- Android使用BitmapFactory.Options解决加载大图片内存溢出问题
- Android使用BitmapFactory.Options解决加载大图片内存溢出问题
- Android使用BitmapFactory.Options解决加载大图片内存溢出问题
- Android使用BitmapFactory.Options解决加载大图片内存溢出问题
- Android使用BitmapFactory.Options解决加载大图片内存溢出问题
- Android使用BitmapFactory.Options解决加载大图片内存溢出问题
- Android使用BitmapFactory.Options解决加载大图片内存溢出问题
- 转!Android使用BitmapFactory.Options解决加载大图片内存溢出问题
- Android使用BitmapFactory.Options解决加载大图片内存溢出问题
- Android使用BitmapFactory.Options解决加载大图片内存溢出问题
- Android使用BitmapFactory.Options解决加载大图片内存溢出问题
- 解决mysqldb查询大量数据导致内存使用过高的问题
- Android使用BitmapFactory.Options压缩图片解决加载大图片内存溢出
- 使用 Android Studio 检测内存泄漏与解决内存泄漏问题
- 解决mysqldb查询大量数据导致内存使用过高的问题