《排序》-教科选修1.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章 排序 课程目标 何谓排序 交换式排序 冒泡排序法 快速排序法 选择式排序 选择排序法 插入式排序 插入排序法 本章体验项目——家家乐彩票机 本程序启动后,进入到彩票机的界面,在界面的又上角有一组单选框,分别是手选和机选(默认)。 如果是机选,则点击“开始”按钮生成一组1到30的随机数并显示在7个小文本框里(没有控制是否有重复数)。点击“排序”按钮将7个数进行排序后并显示在界面中间的文本域中。 如果是手选,则自己在7个文本框中填写所喜欢的号码,然后点击“开始”按钮将7个号码排序后输出。 “清除”按钮是将显示区域的数据清除,“退出”按钮是退出程序。 5.1 何谓排序 5.1.1排序的意义 所谓排序是将一组数据依照一定的顺序排列起来。最常见的排序是“从小到大”的“递增排序”和“从大到小”的“递减排序”。 以下列数组为例进行说明 递增排序: 递减排序: 5.1.2排序的特性 稳定性 不稳定性 排序过后能使值相同的数据保持原顺序中的相对位置 排序过后不能使值相同的数据保持原顺序中的相对位置 例如: 稳定排序的结果: 不稳定排序的结果: 排序后7(1)仍旧在7(2)之前,二者相对位置不变 排序后7(1)则在7(2)之后,二者相对位置发生了改变 5.1.2排序的分类 排序的分类大致上可分为两种 内部排序 外部排序 将欲处理的数据整个存放到内部存储器中排序,数据可被随机存取 交换式排序 选择式排序 插入式排序 欲处理的数据两过于庞大,无法全部存放到内部存储器,必须借助外部的辅助存储器(比如:硬盘),由于数据是存在外存中,故数据不可随机被存取 合并排序法 直接合并排序法 在本书中只介绍内部排序法。 以下所有排序均为从小到大升序排列 5.2交换式排序 内部排序中的交换式排序,是运用数据值比较后,以判断规则对数据位置进行交换,已达到排序的目的。 交换式排序法又可分为两种 冒泡排序法(Bubble Sort) 快速排序法(Quick Sort) 5.2.1冒泡排序法 排序方法 从数组第一个元素开始,将第一个元素a[i]同下一个元素a[i+1]进行比较,如果a[i]大于a[i+1]则将两者相交换。直到比较完最后一个元素。这时数组中最小的元素会被交换成为数组首端。 由于该比较法每次可以将最大或者最小的元素以交换的方式移动到数组首或数组为,就像气泡从水底浮向水面一样,到水面时气泡最大,故称该排序法为冒泡排序法。 举例说明 如数组:int[] a={6,5,8,3,7}; 该数组中一共有5个数据,所以要比较4趟,每趟相互比较4次。 第一趟: (1)a[0] VS a[1],因为a[0]a[1],所以交换a[0]和a[1] (2)a[1] VS a[2],因为a[1]a[2],所以不能交换a[1]和a[2]。数组不变。 (3)a[2] VS a[3],因为a[2]a[3],所以交换a[2]和a[3]。 (4)a[3] VS a[4],因为a[3]a[4],所以交换a[3]和a[4]。 这样第一趟就比较完了,数组中最大的8也到了最后一位,成为第一个吐出的泡泡。 按照这样的步骤继续循环直到所有元素都排序完成为止。 public class BubbleSort { public void bubbleSort(int[] a) { int t=0; for(int i=0;ia.length-1;i++) { for(int j=i+1;j=a.length-1;j++) { if(a[i]a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } for(int k=0;ka.length;k++) { System.out.print(a[k]+ ); } System.out.println(); } System.out.println(----------------); } } } 打印每一趟排序的结果 进行比较,如果前面的元素比后面的大则交换 冒泡排序的优点和缺点 优点: 若数据已有部分排好序,则可以 很快的完成排序。 缺点: 会反复扫描数据,比较相邻的两 个数据,速度不快也没有效率。 冒泡排序属于稳定性排序法 最佳状况:数据的顺序恰与排序后的顺序相同 最坏状况:数据的顺序恰与排序后的顺序相反 如:1 2 3 4 5 如:5 4 3 2 1 5.2.2快速排序法 快速排序是C.R.A.Hoare于1962年提出的一

文档评论(0)

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

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

1亿VIP精品文档

相关文档