编程珠玑之第一章习题5:k趟算法给1000w数据排序的测试用例
2013-09-17 17:08
411 查看
习题5中为了能够实现在严格的1MB空间内给数据排序,可以使用k趟算法进行排序。每一趟一个区间,k趟我们可以给1000w整数划分k个区间,在这k个区间内分别进行排序,依照这个思路,我写了一个简单的测试用例,如下:
文本形式的读取文件,可以依照“
编程珠玑之习题1.5:两趟算法完成100w数据排序 ”来完成,由于时间关系,我再不去动手实现!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #include <stdio.h> #include <stdlib.h> #include <string.h> /*memset*/ #define MAxNUM 100 // 最大值 #define COUNT 11 // 排序次数 typedef struct{ unsigned int bit:1; } bitType; // 占1位 int main(void) { bitType arr[1 + MAxNUM/COUNT]; memset(arr, 0, sizeof(arr)); // 清零 int base; if (MAxNUM%COUNT == 0) base = MAxNUM/COUNT; else base = MAxNUM/COUNT + 1; int a[10] = {23, 3, 67, 0, 8, 87, 5, 56, 6, 13}; for (int i = 1; i <= COUNT; i++) { for(int j=0; j < 10; j++) { if (a[j] >= base*(i-1) && a[j] < base*i) { arr[a[j]-base*(i-1)].bit = 1; } } for(int k=0; k < (MAxNUM/COUNT + 1); k++) { if (arr[k].bit == 1) printf("%d\t", k+base*(i-1)); } memset(arr, 0, sizeof(arr)); // 清零 } return 0; } |
编程珠玑之习题1.5:两趟算法完成100w数据排序 ”来完成,由于时间关系,我再不去动手实现!
相关文章推荐
- 编程珠玑之第一章习题6给每个整数不超过10次的100w数据排序的测试用例
- 对一千万条数据进行排序---编程珠玑第二版 第一章
- 编程珠玑之第一章习题7:处理程序存在的缺陷的问答与测试
- 编程珠玑之第一章习题5:两趟算法完成100w数据排序
- 编程珠玑之第一章习题3:度量100w整数排序的运行时间
- 编程珠玑之第一章习题8:包含区号800、877,888情况下的排序测试用例
- 对一千万条数据进行排序---编程珠玑第二版 第一章
- 对数组进行排序、求最大值和求元素和的算法都编写为函数模板,采用相关数据进行测试。
- 【编程珠玑】第一章电话号码排序
- 编程珠玑 第一章习题解答
- 对数组进行排序、求最大值和求元素和的算法都编写为函数模板,采用相关数据进行测试。
- 对数组进行排序、求最大值和求元素和的算法都编写为函数模板,采用相关数据进行测试
- 转-编程珠玑第一章习题9
- 编程珠玑之第一章习题4: 生成不同的随机顺序的随机整数及存储与读取
- 【编程珠玑】第一章位图排序
- 算法第三次作业(1. 排序。对文件 largeW.txt(下载链接)中的数据,编程实现冒泡排序(方法名:bubbleSort) 与 归并排序(mergeSort),把排序后的结果分别保存到largeW
- 编程珠玑习题:多趟位图排序,数字不重复出现
- 程序员编程艺术(算法卷):第十章、如何给10^7个数据量的磁盘文件排序
- 编程珠玑习题:数字重复出现位图排序