bitmap sort(适用于不重复的整数间的排序)
2012-05-03 00:00
288 查看
额外的信息多,排序效率就高。
1. 整数
2. 不重复
3. 一定范围内
1. 整数
2. 不重复
3. 一定范围内
#include <stdio.h> #include <stdlib.h> #include <assert.h> #define BITPERWORD 32 #define SHIFT 5 #define MASK 0x1F #define N 10000000 int a[1 + N/BITPERWORD]; void set(int i) { a[i>>SHIFT] |= (1<<(i&MASK)); } void clr(int i) { a[i>>SHIFT] &= ~(1<<(i&MASK)); } int test(int i) { return a[i>>SHIFT] & (1<<(i&MASK)); } int main(int argc, char *argv[]) { assert(argc == 3); char *inputfile = argv[1]; char *outputfile = argv[2]; FILE *fin = fopen(inputfile, "r"); assert(fin != NULL); FILE *fout = fopen(outputfile, "w"); assert(fout != NULL); int i; for (i=0; i<N; i++) clr(i); while (fscanf(fin, "%d", &i) != EOF) set(i); for (i=0; i<N; i++) if (test(i)) fprintf(fout, "%d\n", i); fclose(fin); fclose(fout); return 0; }
相关文章推荐
- bitmap对海量无重复的整数排序
- Bitmap在海量无重复整数排序时的应用
- bitmap对海量无重复的整数排序--转
- 运用bitmap解决一道海量数据处理面试题:在2.5亿个整数中找出不重复的整数,注,内存不足以容纳这2.5亿个整数。
- 混合使用ForkJoin+Actor+Future实现一千万个不重复整数的排序(Scala示例)
- 02_对N个长度最长可达到1000的数进行排序、对给定的一个字符串,找出有重复的字符,并给出其位置、输入一系列整数,将其中最大的数挑出,并将剩下的数进行排序
- 关于数组的.sort()方法案例:删除数组中重复的元素并排序
- 冒泡排序设标志避免重复:Sort:Bubble Sort using tag and Xor operation
- 读入文本文件data.txt中的整数,调用sort()对数组arr元素排序,最后显示出来
- 2011-12-04 15:36 JAVA实现位向量给无重复元素的整数数组排序
- 一个数组中有65535个数不重复的大于0的整数(即:0~~65535内所有不重复的整数,数序是杂乱无章的), 用最快的方式排序
- [LintCode] Sort Integers II 整数排序之二
- 使用bitmap对一个大小在一定范围内的无重复数据排序(比如电话号码)|在一个大小在一定范围内的数据集中查找重复数据
- 2.5亿个整数中找出不重复的整数 bitmap
- 编程珠玑_磁盘中无重复大量整数数据排序限制内存借助位图
- 给10^7个有重复的整数排序(败者树)
- 去重复和排序【sort】【uniq】
- jquery中去重复排序(函数: $.grep() join() sort() )
- 一个数组中有65535个数不重复的大于0的整数(即:0~~65535内所有不重复的整数,数序是杂乱无章的), 用最快的方式排序
- sort 排序文本,过滤重复