《数据结构(C#语言描述)》第09章排序.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Company LOGO 第9章 排序 《数据结构(C#语言描述)》配套PPT 引入 《数据结构(C#语言描述)》配套PPT 排序(Sorting)是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为按关键字“有序”的记录序列。如何进行排序,特别是高效率地进行排序是计算机工作者学习和研究的重要课题之一。本章主要介绍几类内部排序方法的基本思想、排序过程、算法实现。 9.1 排序的基本概念 《数据结构(C#语言描述)》配套PPT 内排序:若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序; 外排序:若参加排序的记录数量很大,内存无法容纳全部资料,排序需要借助外部存储设备才能完成,则称此类排序为外部排序。 9.2 插入排序 《数据结构(C#语言描述)》配套PPT 插入排序(Insertion Sort)的主要思想是不断地将待排序的元素插入到有序序列中,使有序序列不断扩大,直至所有元素都进入有序序列中。 9.2 插入排序 《数据结构(C#语言描述)》配套PPT 9.2.1 直接插入排序 3 6 5 9 7 1 8 2 i j temp 4 插入排序 1 9.2 插入排序 《数据结构(C#语言描述)》配套PPT 9.2.1 直接插入排序 3 6 5 9 7 1 8 2 i j R[0] 4 改进后的插入排序 2 9.2 插入排序 《数据结构(C#语言描述)》配套PPT 9.2.2 希尔排序 希尔排序(Shell Sort)又称为缩小增量排序,是由D.L.Shell在1959年提出的,它是对直接插入排序的一种改进方法。直接插入排序法更适合数据量较少的排序,当待排序记录序列接近“正序”时,其时间复杂度也可提高至接近O(n)。希尔排序正是依据此,对直接插入排序进行改进。其基本思想是将待排序的记录划分成几组,从而减少参与直接插入排序的数据量,当经过几次分组排序后,记录的排列已经基本有序,这时再对所有记录实施直接插入排序。 9.2 插入排序 《数据结构(C#语言描述)》配套PPT 9.2.2 希尔排序 3 6 5 9 7 1 8 2 4 i j d=4 temp 8 9.2 插入排序 《数据结构(C#语言描述)》配套PPT 9.2.2 希尔排序 希尔排序适用于待排序记录数目较大的情况,在此情况下,希尔排序一般要比直接插入排序快。1971年,斯坦福大学的詹姆斯.彼得森和戴维.L.拉塞尔在大量实验的基础上推导出,希尔排序的时间复杂度约为O(n1. 3)。 9.3 交换排序 《数据结构(C#语言描述)》配套PPT 交换排序(Exchange Sort)的主要思路是在排序过程中,通过对待排序记录序列中元素进行比较,如果发现次序相反,就将存储位置交换来达到排序目的。本节主要介绍两种交换排序方法:冒泡排序和快速排序。 9.3 交换排序 《数据结构(C#语言描述)》配套PPT 9.3.1 冒泡排序 冒泡排序(Bubble Sort)是一种简单的交换排序方法。它的基本思想是对所有相邻记录进行比较,如果是逆序,则将其交换,最终达到有序。 9.3 交换排序 《数据结构(C#语言描述)》配套PPT 9.3.1 冒泡排序 10 8 3 15 26 11 30 i j 9.3 交换排序 《数据结构(C#语言描述)》配套PPT 9.3.1 冒泡排序 冒泡排序法在运行时间方面,待排序记录越接近有序,算法的执行效率就越高,反之,执行效率就越低,它的平均时间复杂度为O(n2)。 9.3 交换排序 《数据结构(C#语言描述)》配套PPT 9.3.2 快速排序 快速排序是由C.A.R Hoarse提出并命名的一种排序方法,。在各种排序方法中,这种方法对元素之间比较次数较少。因而速度也比较快,被认为是目前最好的排序方法之一。在.NET的多个集合类所使用的Sort()方法正是使用快速排序法对集合中的元素进行排序的。 9.3 交换排序 《数据结构(C#语言描述)》配套PPT 9.3.2 快速排序 3 6 5 9 7 1 8 2 4 i j 3 temp 9.3 交换排序 《数据结构(C#语言描述)》配套PPT 9.3.2 快速排序 快速排序的平均时间复杂度为O(nlog2n)。就平均时间而言,快速排序是目前被认为最好的内部排序方法。但是,如果待排序记录的初始状态有序,快速排序蜕化为冒泡排序,其时间复杂度为O(n2)。也就是说,排序记录越乱,基准两侧记录数量越接近,排序速度越快;待排序记录越有序,排序速度越慢。为了避免一趟排序后的记录集中的基准的一侧,可以在快速排序前对序列进行“预处理”,将序列的第一个元素、中间元素和最后一个元素进行对比,取中间的值作为基准值。 9.4 选择排序 《数据结构(C#语言描述)》配套PPT 选择排序(Selection Sor

文档评论(0)

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

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

1亿VIP精品文档

相关文档