软件技术基础排序.pptVIP

  1. 1、本文档共74页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件技术基础排序

教学目标 了解有关排序的 基本概念 排序的典型算法 二叉排序树 排序(Sorting) 将一个无序序列整理成按值非递减(或非递增)顺序排列的有序序列。 排序可以在不同的存储结构上实现。 基本排序是在顺序存储的线性表中实现的; 二叉排序树利用二叉树的链式存储结构实现无序表的有序化。 三种基本排序方法: 交换排序 (如 冒泡排序和快速排序); 插入排序 (如 简单插入排序和希尔排序); 选择排序 (如 简单选择排序和堆排序); 排序算法的数据结构 顺序存储结构(C语言描述): #define N n struct record { int key ; /* 关键字项 */ int otherterm;/* 其它项 */ } ; typedef struct record RECORD; RECORD file[N+1]; 二、典型排序算法 冒泡排序 快速排序 简单插入排序 希尔排序 简单选择排序 堆排序 交换排序 冒泡排序 冒泡排序(Bubble sort)是基于交换排序的一种算法。它是依次两两比较待排序元素;若为逆序(递增或递减)则进行交换,将待排序元素从左至右比较一遍称为一趟“冒泡”。每趟冒泡都将待排序列中的最大关键字交换到最后(或最前)位置。直到全部元素有序为止。 ? ? ? … ? a1 a2 a3 … an-1 an 冒泡排序算法举例 设有数列{ 65,97,76,13,27,49,58 } 比较次数 第1趟 {65,76,13,27,49,58},{97} 6 第2趟 {65,13,27,49,58},{76,97} 5 第3趟 {13,27,49,58},{65,76,97} 4 第4趟 {13,27,49},{58,65,76,97} 3 第5趟 {13,27},{49,58,65,76,97} 2 第6趟 {13},{27,49,58,65,76,97} 1 总计: 21 次 冒泡排序算法 bubble(int *item,int count) { int a,b,t; for(a=1;acount;++a)/* n-1 趟冒泡处理 */ for(b=1;b=count-a;b++)/*每趟n-i次比较 */ if(item[b-1]item[b])/*若逆序,则交换*/ { t=item[b-1]; /* 它们的位置 */ item[b-1]=item[b]; item[b]=t; } } 冒泡排序算法主程序 #define N 7 #include stdio.h main() { int s[]={65,97,76,13,27,49,58},i; bubble(s,N); /* 调用选择排序函数 */ printf(The sorted string is:\n); for(k=0;kN;k++) printf( %d,s[k]); } 改进的冒泡排序算法 从上述举例中可以看出,从第4趟冒泡起,序列已有序,结果是空跑了3趟。若两次冒泡处理过程中,没有进行交换,说明序列已有序,则停止交换。这就是改进的冒泡算法的处理思想。 用改进的冒泡算法处理,比较次数有所减少。 数列{ 65,97,76,13,27,49,58 } 比较次数 第1趟 {65,76,13,27,49,58},{97} 6 第2趟 {65,13,27,49,58},{76,97} 5 第3趟 {13,27,49,58},{65,76,97} 4 第4趟 {13,27,49},{58,65,76,97} 3 总计: 18 次 改进的冒泡排序算法 bubble_a(int *item,int count) { int a,b,t,c; for(a=1;acount;++a) /* n-1趟的循环 */ { c=1; /* 设置交换标志 */ for(b=1;b=count-a;b++)

文档评论(0)

phltaotao + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档