第1章-1+排序.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本节基本内容与要求 基本内容 顺序查找、二分查找、二叉树查找以及散列表上查找 及算法思想 排序的基本概念以及选择、插入、交换和归并四类排序的基本思想和算法 要求 掌握线性表、树和散列表(或称哈希表)的查找方法及算法实现以及各种查找方法的应用 熟练掌握选择、插入、交换和归并四类排序的基本思想和算法 1.4 内部排序 一、基本概念 二、选择排序 三、插入排序 四、交换排序 五、归并排序 一、基本概念 1. 排序的功能:将一个数据元素(或记录)的任意序列,重新排成一个按关键字有序的序列。 2. 排序的定义 假设含n个记录的序列为{ R1, R2, …, Rn } 其相应的关键字序列为 { K1, K2, …,Kn } 这些关键字相互之间可以进行比较,即在 它们之间存在着这样一个关系 :   Kp1≤Kp2≤…≤Kpn 按此固有关系将上式记录序列重新排列为 { Rp1, Rp2, …,Rpn } 的操作称作排序。 3、排序的基本操作 4、排序的稳定性 5、排序的分类 内部排序:是指在排序的整个过程中,数据全部存放在计算机的内存储器里,并且在内存储器里调整数据的位置; 当文件很大以致内存不足以存放全部数据时,在排序过程中需要对外存进行存取访问,称这种借助于外存储器进行排序的方法为外部排序。 注意: ① 内排序适用于记录个数不很多的小文件 ② 外排序则适用于记录个数太多,不能一次将其全部记录放入内存的大文件。 二、选择排序 直接选择排序 又称为简单选择排序,是一种简单直观的排序方法。 从待排序的所有记录中,选取关键字最小的记录,并将它与原始序列中的第一个记录交换,然后从去掉了关键字最小记录的剩余记录中选择关键字最小的记录将它与原始记录序列的第二个记录交换位置,以此类推,直到序列中全部记录排序完毕。 算法: void selectsort(elemtype x[],int n) //对记录序列x[0]~x[n-1]进行直接选择排序 { int i,j,small; elemtype swap; for(i=0;in-1;i++) { small=i; for(j=i+1;jn;j++) { if(x[j].keyx[small].key) small=j; } if(small!=i) { swap=x[i]; X[i]=x[small]; X[small]=swap;} } } 三、插入排序 每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。 把新元素(未排序的元素的关键字)逐个插入正在增长的顺序表中。 寻找插入位置的方法: 线性插入排序 对半插入排序 希尔排序 1、线性插入排序 基本思想:每步将一个待排序的元素按其大小插入到前面已排序的数据中的适当位置。重复该工作,直至有序区包含所有元素。 方法: 具体方法:先将第一个数据看成是一个有序的子序列,然后从第2个数据起逐个插入到这个有序的子序列中去,相应的元素要移动。 例: 插入算法 方法:Ki与Ki-1,K i-2,…K1依次比较,直到找到应插入的位置。 哨兵(监视哨) 哨兵(监视哨)有两个作用 作为临时变量存放R[i](当前要进行比较的关键字)的副本; 在查找循环中用来监视下标变量j是否越界。 性能分析 2 希尔插入排序——算法思想 如何选择增量序列才能产生最好的排序效果,这个问题至今没有得到解决。 希尔本人最初提出取 d1=?n/2?, di+1=?di/2?, dt=1,t=?log2n?。 希尔插入排序——步骤 (1)首先选取一个整数d1n(n为待排序数据的个数),作为两个数据之间的距离,这样把全部数据分成d1个组,凡是距离为d1的数据放在一个组里,在各组内进行内部排序,直到各组排好序为止。 (2)从上述的结果序列出发,再选择d2d1,重复上面的分组与排序工作。 (3)依次取di+1di,直到dm=1(设一共需要m次分组),即所有数据放在一组中排序为止。此时,全部数据便按次序排好了。 希尔插入排序——特点 2. 希尔排序 四、交换排序 两两比较待排序记录的关键字,发现两个记录次序相反时即进行交换,直到没有反序的记录为止。 冒泡排序 快速排序 快速排序——基本思想 快速排序 ——方法 目标:找一个记录,以它的关键字作为“枢轴”,凡其关键字小于枢轴的记录移至该记录之前,反之,移至该记录之后。 关键字通常取第一个记录的值为基准值。

文档评论(0)

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

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

1亿VIP精品文档

相关文档