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

wordpress悬浮客服代码长沙seo培训班

wordpress悬浮客服代码,长沙seo培训班,给孩子做的饭网站,校园网站制作模板目录 1、外排序 2、计数排序 1、外排序 上一节中提到的排序都可以用来进行内排序&#xff0c;但是只有归并排序的思想可以用来进行外部排序&#xff0c;因为文件数据是没办法像数组那样进行访问的。 例如&#xff1a; #include <stdio.h> #include <assert.h> …

目录

1、外排序

2、计数排序


1、外排序

上一节中提到的排序都可以用来进行内排序,但是只有归并排序的思想可以用来进行外部排序,因为文件数据是没办法像数组那样进行访问的。

例如:

#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <string.h>void Swap(int* p1, int* p2)
{int tmp = *p1;*p1 = *p2;*p2 = tmp;
}int GetMidIndex(int* a, int begin, int end)
{int mid = (begin + end) / 2;if (a[begin] < a[mid]){if (a[mid] < a[end])return mid;else if (a[begin] > a[end])return begin;elsereturn end;}else // a[begin] > a[mid]{if (a[mid] > a[end])return mid;else if (a[begin] < a[end])return begin;elsereturn end;}
}void QuickSort(int* a, int left, int right)//快速排序
{assert(a);if (left >= right)return;int midIndex = GetMidIndex(a, left, right);Swap(&a[midIndex], &a[right]);int prev = left - 1;int cur = left;int keyindex = right;while (cur < right){if (a[cur] < a[keyindex] && ++prev != cur)Swap(&a[prev], &a[cur]);++cur;}Swap(&a[++prev], &a[keyindex]);int div = prev;QuickSort(a, left, div - 1);QuickSort(a, div + 1, right);}void _MergeFile(const char* file1, const char* file2, const char* mfile)//对两个文件进行归并。
{FILE* fout1 = fopen(file1, "r");//读文件1。if (fout1 == NULL){printf("打开文件失败\n");exit(-1);}FILE* fout2 = fopen(file2, "r");//读文件2。if (fout2 == NULL){printf("打开文件失败\n");exit(-1);}FILE* fin = fopen(mfile, "w");//写出归并文件。if (fin == NULL){printf("打开文件失败\n");exit(-1);}int num1, num2;int ret1 = fscanf(fout1, "%d\n", &num1);int ret2 = fscanf(fout2, "%d\n", &num2);while (ret1 != EOF && ret2 != EOF){if (num1 < num2){fprintf(fin, "%d\n", num1);ret1 = fscanf(fout1, "%d\n", &num1);}else{fprintf(fin, "%d\n", num2);ret2 = fscanf(fout2, "%d\n", &num2);}}while (ret1 != EOF){fprintf(fin, "%d\n", num1);ret1 = fscanf(fout1, "%d\n", &num1);}while (ret2 != EOF){fprintf(fin, "%d\n", num2);ret2 = fscanf(fout2, "%d\n", &num2);}fclose(fout1);fclose(fout2);fclose(fin);
}void MergeSortFile(const char* file)//待排文件
{FILE* fout = fopen(file, "r");if (fout == NULL){printf("打开待排文件失败\n");exit(-1);}int n = 10;//每组数据有10个,我们在该测试中,仅仅只测试100个数据的外排序,所以每组分为了10个数据。int a[10];//将num每次读取的数据放入该数组中。int i = 0;int num = 0;//每次读取的数据暂时存放在此处。char subfile[20];int filei = 1;memset(a, 0, sizeof(int) * n);//初始化数组awhile (fscanf(fout, "%d\n", &num) != EOF){if (i < n - 1){a[i++] = num;}else{a[i] = num;QuickSort(a, 0, n - 1);//使用快速排序进行内存上的排序。sprintf(subfile, "%d", filei++);FILE* fin = fopen(subfile, "w");if (fin == NULL){printf("打开文件失败\n");exit(-1);}for (int j = 0; j < n; j++){fprintf(fin, "%d\n", a[j]);}fclose(fin);i = 0;memset(a, 0, sizeof(int) * n);}}// 利用互相归并到文件,实现整体有序char mfile[100] = "12";//由file1和file2归并出来的文件char file1[100] = "1";char file2[100] = "2";for (int i = 2; i <= n; ++i){// 读取file1和file2,进行归并出mfile_MergeFile(file1, file2, mfile);strcpy(file1, mfile);sprintf(file2, "%d", i + 1);sprintf(mfile, "%s%d", mfile, i + 1);}printf("%s文件排序成功\n", file);fclose(fout);
}int main()
{MergeSortFile("../DataSort.txt");return 0;
}

 对于这个例子,读者不必要关注这个代码是不是写的有点不规范,只需要明白外排序的思想即可。

2、计数排序

思想:计数排序又称为鸽巢原理,操作步骤:

1. 统计相同元素出现次数。

2. 根据统计的结果进行排序。

例如:

//计数排序
void CountSort(int* a, int n)
{int min = a[0], max = a[0];for (int i = 0; i < n; i++){if (a[i] < min){min = a[i];}if (a[i] > max){max = a[i];}}int range = max - min + 1;int* countA = (int*)malloc(sizeof(int) * range);memset(countA, 0, sizeof(int) * range);//for (int i = 0; i < n; i++){countA[a[i] - min]++;}int k = 0;for (int j = 0; j < range; j++){while (countA[j]--){a[k++] = j + min;}}
}

计数排序的特性总结:

1. 计数排序在数据范围集中时,效率很高,但是适用范围及场景有限(仅仅只适用于整数的排序)

2. 时间复杂度:O(N+range)。

3. 空间复杂度:O(range)。

4. 稳定性:稳定

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

相关文章:

  • 手机应用商店免费下载seo人员培训
  • dedecms电影网站模板如何做网络销售平台
  • wwwroot 网站根目录能修改吗今日热点新闻素材
  • 网站开发招标文件hao123网址大全浏览器设为主页
  • 做义工的同城网站卢松松外链工具
  • 南海网站建设卖网站链接
  • 黑色大气金融投资企业网站模板新闻发布系统
  • 太原网站建设培训seo页面代码优化
  • 云南住建局和城乡建设官网网站seo内容优化
  • 河北专业做网站北京百度快照推广公司
  • 新手用jsp做网站网站建设服务
  • 通付盾 网站建设公司链接提交入口
  • 隆尧建设局网站品牌设计
  • 做盗版视频网站吗网站优化
  • wordpress添加导航页面上海优化网站公司哪家好
  • 分栏式的网站有哪些seo上排名
  • 互联网公司招聘信息沈阳seo按天计费
  • 免费h5杭州seo网站推广排名
  • 布吉附近网站建设百度文库网页版登录入口
  • js做的网站公司广告推广方案
  • 效果好的徐州网站建设企业推广是什么职业
  • 安庆什么网站好小事做申请网站域名要多少钱
  • 学做吃的网站seo专业培训机构
  • 沈阳城乡建设委员会网站网络营销网站平台有哪些
  • 班级网站建设方案怎么做神马搜索排名seo
  • 吉林省梨树县政府网站建设想做电商怎么入手
  • 网站建设 后期维护好搜网
  • 如何进行电子商务网站推广?天津优化公司哪家好
  • 新疆前昆工程建设集团网站免费大数据分析网站
  • 做网站的版式会侵权吗百度seo排名优化软件化