小项目——大数据处理
来源:互联网 发布:天翼合伙人软件 编辑:程序博客网 时间:2024/05/21 17:51
之前上课的时候老师给我们留下一个作业,自己写一个大数据的处理,题目分为三部分
1、0-9的数字,统计0-9出现次数最多的数字。可以定义10个计数器
2、数组最大可以定义5个计数器,怎么做?
3、1000个范围在0-9的数据从文件中读取,将奇数放到一个文件,将偶数放到另一个文件中,怎么做?
留下这三个问题,让我们自己思考。
下面就是对这三个问题的解答:
1、代码实现
#include <stdio.h>typedef struct Data{int num;//数字int times;//数字出现的次数}Data;//大数据//arr存放的数据范围0~9,//统计arr中出现次数最多的数字Data TimesMax(int *arr,int len){int brr[10] = {0};//计数器,0~9//brr[0]是0的计数器//......//brr[9]是9的计数器for(int i=0;i<len;i++){brr[arr[i]]++;//哈希表,数据和存放数据的位置有关系}Data da;da.num = 0;da.times = brr[0];for(int i=1;i<10;i++){if(da.times < brr[i]){da.times = brr[i];da.num = i;}}return da;}int main(){int arr[] = {0,2,1,5,7,9,1,2,1,5,1,6,1,7,8,1,2,1,3,0,9,1,6,1,8};//数据范围0~9Data d = TimesMax(arr,sizeof(arr)/sizeof(arr[0]));printf("数字=%d,次数=%d\n",d.num,d.times);//1,9return 0;}
2、代码实现
#include <stdio.h>typedef struct Data{int num;//数字int times;//数字出现的次数}Data;//大数据//arr存放的数据范围0~4,//统计arr中出现次数最多的数字Data TimesMax(int *arr,int len){int brr[5] = {0};//计数器,0~4//brr[0]是0的计数器//......//brr[4]是4的计数器Data da;for(int j = 0;j < 2;j++){for(int i=0;i < len;i++){if(arr[i] < 5 * (j + 1) && arr[i] > 5 * j){brr[arr[i]]++;}}if(j == 0){da.num = 0;da.times = brr[0];}for(int i = 0;i < 5;i++){if(da.times < brr[i]){da.times = brr[i];da.num = i;}}}return da;}int main(){int arr[] = {0,2,1,5,7,9,1,2,1,5,1,6,1,7};//数据范围0~9Data d = TimesMax(arr,sizeof(arr)/sizeof(arr[0]));printf("数字=%d,次数=%d\n",d.num,d.times);//1,9return 0;}
3、代码实现
#include <stdio.h>#include <assert.h>#include <stdlib.h>#include <time.h>#define NUM 1000000#define ITEM_NUM 10000#define AMOUNT 4 //分组数typedef struct Data{int num;//数字int times;//数字出现的次数}Data;//得到哈希文件path中的重复次数最多的数据static Data TimesMaxHash(const char *path){FILE *fr = fopen(path,"rb");assert(fr != NULL);int arr[ITEM_NUM] = {0};int tmp;while(fread(&tmp,sizeof(int),1,fr) > 0){arr[tmp/AMOUNT]++;}fclose(fr);Data d = {0,0};for(int i=0;i<ITEM_NUM;i++){if(d.times < arr[i]){d.times = arr[i];d.num = AMOUNT*i + tmp%AMOUNT;}}return d;}//数据范围0~32767,但是能使用的数组10000长度//需要分成4部分Data TimesMax(const char *path){FILE *fr = fopen(path,"rb");assert(fr != NULL);FILE *fwArr[4];char pathArr[AMOUNT][100];int i;for(i=0;i<AMOUNT;i++)//生成临时文件文件名{sprintf(pathArr[i],"%d.txt",i);fwArr[i] = fopen(pathArr[i],"wb");assert(fwArr[i] != NULL);}int tmp;while(fread(&tmp,sizeof(int),1,fr) > 0){fwrite(&tmp,sizeof(int),1,fwArr[tmp%AMOUNT]);}fclose(fr);for(i=0;i<AMOUNT;i++){fclose(fwArr[i]);}Data d[AMOUNT];for(i=0;i<AMOUNT;i++){d[i] = TimesMaxHash(pathArr[i]);}for(i=0;i<AMOUNT;i++){remove(pathArr[i]);}int maxIndex = 0;for(i=1;i<AMOUNT;i++){if(d[maxIndex].times < d[i].times){maxIndex = i;}}return d[maxIndex];}//创建一个path文件,并生成NUM个0~9之间的数字void CreateFile(const char *path){FILE *fw = fopen(path,"wb");assert(fw != NULL);int tmp;srand(time(NULL));for(int i=0;i<NUM;i++){tmp = rand();//0~32767fwrite(&tmp,sizeof(int),1,fw);}fclose(fw);}int main(){char *path = "big.txt";CreateFile(path);Data d = TimesMax(path);printf("数字:%d,次数:%d\n",d.num,d.times);return 0;}
阅读全文
0 0
- 小项目——大数据处理
- 大数据处理项目相关
- 大数据处理利器——基础概念
- 模拟大数据处理之——bitset
- 大数据处理算法—Bloom Filter
- Python 数据处理——小函数
- 大项目小项目
- 小知识点-大数据处理之初步理解
- javaweb项目大数据处理的解决方案
- 小程序构成大项目之——分页显示
- 小程序构成大项目之——分页显示
- 大项目与小项目
- 海量数据处理系列——十道海量数据处理面试题与十个方法大总结
- 海量数据处理——十道海量数据处理面试题与十个方法大总结
- 大数据处理利器——幂律模型
- 大数据——海量数据处理的基本方法总结
- 面试题——大数据处理解题思路
- 《Spark大数据处理》—— 读后总结
- 提取中文句子主谓宾的Java实现
- 想要认真写博客的第一天
- java和js中JSONObject,JSONArray,Map,String之间转换
- el表达式和ognl表达式访问带点的name属性
- 用c语言做一个词典
- 小项目——大数据处理
- SQL小bug
- Wireshark基本介绍和学习TCP三次握手
- 运行Maven项目时出现invalid LOC header (bad signature)错误,Tomcat不能正常启动
- 2017/12/6
- UGUI实现不规则区域点击响应
- 虚幻4打开游戏开场动画设置相关问题
- 【深度学习】caffe 中的一些参数介绍
- 关于Echarts中formatter实现动态数据的方法