053054数据结构和算法的Java实现_排序.ppt

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

2006 《Java高级程序设计》 专业教程 理论讲解部分 Ver 3.1 * 第6章 数据结构和算法的Java实现 * 课程概述 选择排序 冒泡排序 插入排序 重点 选择排序 冒泡排序 插入排序 难点 冒泡排序 学习目标 掌握选择排序 掌握冒泡排序 掌握插入排序 7 排序 排序是算法中很重要的一个环节.很多查询的基础就是排序. 例如,前面讲的树的插入,就是一种插入排序. 排序不但能在数据结构创建,成长是使用,更多的是在已有的杂乱无章的结构中使用. 关于排序的算法非常多,而且各有优缺点.下面介绍3种排序方法分别为: 选择排序 冒泡排序 插入排序 7.1 选择排序 选择排序的主要思想是寻找未排序中最小的元素加入到已有序列,直到未排序序列为空. 8 1 4 2 7 3 5 6 有一无序数组,如下: 现按照选择排序的规则进行升序排序. 7 排序 8 1 4 2 7 3 5 6 现将该数组分为两个部分,第一部分为有序部分,第二部分为无序部分. 在初始时,有序部分的元素数量为0,全部为无序部分. 7.1 选择排序 7 排序 8 1 4 2 7 3 5 6 首先在无序部分中寻找最小元素所在的位置. 然后将其与第一位的元素交换 8 4 1 2 7 3 5 6 7.1 选择排序 7 排序 其余的按照上述方法继续执行 8 4 1 2 7 3 5 6 8 4 1 2 7 3 5 6 此时,可以明显看到以排序部分与无序部分. 7.1 选择排序 7 排序 8 4 1 6 7 3 5 2 8 4 1 6 7 3 5 2 8 4 1 6 7 5 3 2 7.1 选择排序 7 排序 8 4 1 6 7 3 5 2 8 4 1 6 7 3 5 2 8 4 1 6 7 5 3 2 7.1 选择排序 7 排序 直到进行到所有无序部分的元素都被排序 7 6 1 8 5 4 3 2 此时排序完成 选择排序的特点是查询次数较多,元素位置变换较少,比较适合易于查询而移动较复杂的数据. 7.1 选择排序 7 排序 9.7.1 选择排序 public void selectCompositor(){ int smaller; for(int i = 0 ;idata.length-1;i++){ smaller = i; for(int j = i+1;jdata.length;j++) if(data[smaller]data[j]) smaller = j; if(smaller != i){ int tempData = data[smaller]; data[smaller] = data[i]; data[i] = tempData; } } } 保存查询中较小的数的位置 i分隔以排序与无序部分 在未排序部分寻找最小值 将寻找到的最小值与其相应位置的元素交换 7.1 选择排序 7 排序 7.2 冒泡排序 冒泡排序组要的思想是进行相邻的两个元素之间比较并且交换.有利于利用原有元素在集合中的位置优势. 8 1 4 2 7 3 5 6 冒泡排序的原则是大的下沉小的上浮. 7 排序 8 1 4 2 7 3 5 6 第一轮的排序 首先比较前两个元素,如果顺序与升序相反则交换,否则什么也不作 然后,依次比较第二位与第三位,第三位与第四位,….. 8 1 4 2 7 3 5 6 8 1 4 2 7 3 6 5 7.2 冒泡排序 7 排序 8 1 4 2 7 6 3 5 第一轮的排序 8 1 4 2 7 6 3 5 8 7 4 2 1 6 3 5 8 7 4 2 1 6 3 5 2 7 4 8 1 6 3 5 7.2 冒泡排序 7 排序 第一轮的排序 2 7 4 8 1 6 3 5 此时,第一轮排序完毕,它能够使最大数沉到最底端.然后进行第二轮的排序.每一轮排序能够确保其最大数沉到相应位置.经过元素个数减一次的排序会生成有序数组. 7 6 1 8 5 4 3 2 7.2 冒泡排序 7 排序 public void maopaoCompositor(){ int temp; for(int i = 0;idata.length-1;i++){ for(int j = 0;jdata.length-i-1;j++){ if(data[j]data[j+1]){ temp = data[j]; data[j] = data[j+1]; data[j+1] = temp; } } } } 进行元素数量减一轮的排序 每一次只需比较相邻两个元素 7.2 冒泡排序 7 排序 7.3 插入排序

文档评论(0)

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

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

1亿VIP精品文档

相关文档