当前位置: 首页 > wzjs >正文

手机站模板网站制作详细流程

手机站模板,网站制作详细流程,做网站的怎么赚钱,自己开发手机app软件的步骤外排序是能够处理极大量数据的排序算法,简单来说,外排序处理的数据就是不能一次性装入内存,只能放在读写较慢的外存储器上(一般是硬盘上),外排序通常采用的是一种“排序-递归”的策略。在排序阶段&#xff…

外排序是能够处理极大量数据的排序算法,简单来说,外排序处理的数据就是不能一次性装入内存,只能放在读写较慢的外存储器上(一般是硬盘上),外排序通常采用的是一种“排序-递归”的策略。在排序阶段,先读入能放在内存中的数据量,将排序输出到一个临时文件,依次进行,将待排序数据组织为多个有序的临时文件,然后在归并阶段将这些临时文件组合为一个大的有序文件,即排序结果。由于归并排序不需要随机访问数据,只需要依次按序列读取数据,所以归并排序不仅使内排序还是外排序。

上面一段文字我们基本上没看懂它在说什么,用普通的话来说,就是在平时的工作中我们基本上是有很多的数据,我们需要排序,如果用平时的排序算法会由于数据存放不下而导致无法解决,这时我们就需要借助文件来进行排序。

基本思路:(1)读取n个值排序后写到file1,再读取n个值排序后写到file2;(2)file1和file2利用归并排序的思想,依次读取比较,取小的尾插到mfile,mfile归并为有序文件;(3)将file1和file2删掉,mfile重命名为file1;(4)再读取n个数据排序后写入到file2;(5)继续走file1和file2归并,重复步骤2。直至没有数据。

我们需要先有一个创建数据的函数,开始我们让数据量减少一点,100000个数据我们每一次读取10000个数据进行排序,开始生成的数据放入到data.txt中,然后再和我们之前的想法进行排序、归并等操作,所以最终代码如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <assert.h>
#include <ctype.h>
#include<stdbool.h>
#include<stddef.h>//NULL
#include<time.h>
//数据总个数
#define N 100000
//每次读取的数据个数
#define m N/10
//创建n个随机数写到文件中
void CreateNDate()
{//造数据srand(time(0));const char* file = "data.txt";FILE* fin = fopen(file, "w");if (fin == NULL){perror("fopen error");fclose(fin);return;}for (int i = 0; i < N; ++i){//生成随机数int x = rand() % 30000;//把数据按照一行一个的方式写入到文件中fprintf(fin, "%d\n", x);}//记得关闭文件fclose(fin);
}
//排序
int compare(const void* a, const void* b)
{return (*(int*)a - *(int*)b);
}
//读取m个数据排序
int ReadNDataSort(FILE* fout, const char* file1)
{FILE* fin = fopen(file1, "w");if (fin == NULL){perror("fopen error");fclose(fin);return 0;}int x = 0;int* a = (int*)malloc(sizeof(int) * m);if (a == NULL){perror("malloc error");return 0;}//计数(看读取的数据是否到m个int j = 0;//从fout(data.txt)中读取m个数据for (int i = 0; i < m; i++){//可能读到文件结尾了//所以不能这样写//fscanf(fout, "%d", &x);if (fscanf(fout, "%d", &x) == EOF){break;}a[j++] = x;}if (j == 0){free(a);a = NULL;  return 0;}//排序// 我们不确定是否有m个数据在文件里面,所以我们要把这个m改为j//qsort(a, m, sizeof(int), compare);qsort(a, j , sizeof(int), compare);//写回file1文件for (int i = 0; i < j; i++){fprintf(fin, "%d\n", a[i]);}free(a);a = NULL;return j;
}
//把file1、file2归并到mfile中
void MergeFile(const char* file1, const char* file2, const char* mfile)
{FILE* fout1 = fopen(file1, "r");if (fout1 == NULL){perror("file1 open error");return;}FILE* fout2 = fopen(file2, "r");if (fout2 == NULL){perror("file2 open error");return;}FILE* fout3 = fopen(mfile, "w");if (fout3 == NULL){perror("mfile open error");return;}//归并int x1 = 0;int x2 = 0;int ret1 = 0;int ret2 = 0;ret1 = fscanf(fout1, "%d", &x1);ret2 = fscanf(fout2, "%d", &x2);while (ret1 != EOF && ret2 != EOF){if (x1 < x2){fprintf(fout3, "%d\n", x1);ret1 = fscanf(fout1, "%d", &x1);}else{fprintf(fout3, "%d\n", x2);ret2 = fscanf(fout2, "%d", &x2);}}while (ret1 != EOF){fprintf(fout3, "%d\n", x1);ret1 = fscanf(fout1, "%d", &x1);}while (ret2 != EOF){fprintf(fout3, "%d\n", x2);ret2 = fscanf(fout2, "%d", &x2);}fclose(fout1);fclose(fout2);fclose(fout3);
}
int main()
{//造数据CreateNDate();const char* file1 = "file1.txt";const char* file2 = "file2.txt";const char* mfile = "mfile.txt";//打开文件FILE* fout = fopen("data.txt", "r");if (fout == NULL){perror("fopen error");return -1;}//先进行排序,保证三个文件都不为空ReadNDataSort(fout, file1);ReadNDataSort(fout, file2);while (1){//归并MergeFile(file1, file2, mfile);//删除file1、file2remove(file1);remove(file2);//重命名rename(mfile, file1);//再读文件入file2//可能读取不完全if (ReadNDataSort(fout, file2) == 0){break;}}fclose(fout);return 0;
}

生成随机数的方式可以改为rand()+i,在我电脑上运行不出来结果,但是我看了很久都觉得代码无误,所以发出来了,最终如果生成成功的话后面你直接到这个代码的文件中去查看就可以了。

这就是全部的结果了,代码的运行结果我就没办法提供了,因为这个不是必须要掌握的,代码和结果不重要,只要知道如何实现的就可以了。

下一节将开始C++的学习了,如果感兴趣的可以继续学习哦,如果方向不一样去学习Java或者Python的也祝你们能更上一层楼吧!

http://www.dtcms.com/wzjs/61519.html

相关文章:

  • 南汇建设机械网站优秀网站设计案例
  • dedecms 如何关闭网站网页seo优化
  • 昆山建设监察网站旅游搜索量环比增188%
  • 手机版网站推荐建设网站的十个步骤
  • 网站建设方案可以乱写吗推广公众号的9种方法
  • 选择做印象绍兴网站的原因关键词优化快排
  • 网站 只做程序员b站免费建网站
  • 微页制作网站模板免费下载seo免费浏览网站
  • 购物商城网站建设流程北京百度推广电话
  • 做网站怎样申请动态域名优化什么
  • 网站开发就业前景网站管理系统
  • 一般网站建设公司新手seo要学多久
  • 做企业网站哪家强新网域名查询
  • 顺德o2o网站建设电商网站有哪些
  • 描述网站建设规范方法湖南专业关键词优化服务水平
  • 防城港网站开发手机怎么建立网站
  • 网站备案信息真实性核验单怎么弄宁波网站优化公司价格
  • 网页制作与网站建设实战大全 pdf东莞今天的最新通知
  • 重庆市建设工程seo引擎优化工具
  • 黑龙江做网站的公司有哪些企业seo的措施有哪些
  • ps做网站页面网站seo快速优化技巧
  • 网站实名认证功能怎么做友链交换
  • 做网站柳州福鼎网站优化公司
  • 淄博学校网站建设公司全国防疫大数据平台
  • 有没有做图的网站sem搜索引擎营销
  • 常州做网站麦策电商查销售数据的网站
  • 做淘客网站需要营业执照吗简单免费制作手机网站
  • 交互设计就业前景南宁seo网络推广
  • 一个做任务赚钱的网站网络营销和直播电商专业学什么
  • wordpress评论跳过验证北京百度搜索优化