网站大量收购独家精品文档,联系QQ:2885784924

C语言内排序教程.pptx

  1. 1、本文档共130页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言内排序教程

数据结构;高等学校精品课程(省级) 国家十二五规划教材;交换排序 冒泡排序 快速排序; 排序是数据处理过程中经常使用的一种重要的运算,排序的方法有很多种,本章主要讨论内排序的各种算法,并对每个排序算法的时间和空间复杂性以及算法的稳定性等进行了讨论。 ;10.1 排序的基本概念 ; 按排序过程中使用到的存储介质来分,可以将排序分成两大类:内排序和外排序。 ;评价排序算法优劣的标准 :;/****************************************/ /*常见排序算法的头文件,文件名table.h */ /***************************************/ #define MAXSIZE 100 /*文件中记录个数的最大值*/ typedef int keytype; /*定义排序码类型为整数类型*/ typedef struct{ keytype key; int other; /*此处还可以定义记录中除排序码外的其他域*/ }recordtype; /*记录类型的定义*/ typedef struct{ recordtype r[MAXSIZE+1]; int length; /*待排序文件中记录的个数*/ }table; /*待排序文件类型*/;void init(table *L) /*顺序表初始化函数*/ { int i; srand(time(NULL)); L-length=10; for (i=1;i=10;i++) L-r[i].key= rand(i)%100; } void print(table L) /*顺序表输出函数*/ { int i,k=0; for (i=1;i=L.length;i++) {printf(%4d,L.r[i].key); if (++k%10==0) printf(\n); } printf(\n); };/*顺序表文件输入函数*/ void input(table *L,char *f) {int i; FILE *fp; fp=fopen(f,r); if (fp) { fscanf(fp,%d,L-length); for (i=1;i=L-length;i++) fscanf(fp,%d,L-r[i].key); } else L-length=0; };10.2 插入排序 ;10.2.1 直接插入排序 ;;0 1 2 3 4 5 6;;习题:给出初始数列{47,28,32,15,94,33,14,16}在直接插入排序下的状态变化过程。;void insertsort(table *L) /*直接插入排序*/ {int i,j; for (i=2;i=L-length;i++) { j=i-1; L-r[0]=L-r[i]; /*放置哨兵*/ while ( L-r[j].keyL-r[0].key ) { L-r[j+1]=L-r[j]; j--; } L-r[j+1]=L-r[0]; } } 算法10.1 直接插入排序算法 ;直接插入排序算法执行时间的分析:;最坏情况 :;10.2.2 二分法插入排序 ;void binarysort(table *L) /*折半插入排序*/ { int left,right,mid,i,j; for(i=2;i=L-length;i++) { L-r[0]=L-r[i]; /*保存待插入的元素*/ left=1; right=i-1; /*设置查找范围的左、右位置值*/ while (left=right) /*查找第i个元素的插入位置*/ { mid=(left+right)/2; /*取中点位置*/ if (L-r[i].keyL-r[mid].key) right=mid-1; else left=mid+1; } /*插入位置为left*/ for(j=i-1;j=left;j--) /*后移留空*/ L-r[j+1]=L-r[j]; L-r

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档