计算机软件技术基础 教学课件 ppt 作者 牟艳 陈慧萍 第6章 查找和排序.ppt

计算机软件技术基础 教学课件 ppt 作者 牟艳 陈慧萍 第6章 查找和排序.ppt

  1. 1、本文档共75页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 查找和排序 本章基本内容与要求 基本内容 顺序查找、二分查找、二叉树查找以及散列表上查找 及算法思想 排序的基本概念以及选择、插入、交换和归并四类排序的基本思想和算法 要求 掌握线性表、树和散列表(或称哈希表)的查找方法及算法实现以及各种查找方法的应用 熟练掌握选择、插入、交换和归并四类排序的基本思想和算法 第一节 查找 第二节 排序 一、基本概念 二、选择排序 三、插入排序 四、交换排序 五、归并排序 一、基本概念 1. 排序的功能:将一个数据元素(或记录)的任意序列,重新排成一个按关键字有序的序列。 2. 排序过程的组成步骤: 首先比较两个关键字的大小; 然后将记录从一个位置移动到另一个位置。 在排序过程中如果整个文件在内存中处理,不涉及数据的内、外存交换,则称为“内部排序”,否则若存在内、外存数据的交换,则称为“外部排序”。 排序的基本操作: 对记录的关键字大小进行比较 将记录从一个位置移动到另一个位置 二、选择排序 直接选择排序 又称为简单选择排序,是一种简单直观的排序方法。 从待排序的所有记录中,选取关键字最小的记录,并将它与原始序列中的第一个记录交换,然后从去掉了关键字最小记录的剩余记录中选择关键字最小的记录将它与原始记录序列的第二个记录交换位置,以此类推,直到序列中全部记录排序完毕。 算法: void selectsort(elemtype x[],int n) //对记录序列x[0]~x[n-1]进行直接选择排序 { int i,j,small; elemtype swap; for(i=0;i<n-1;i++) { small=i; for(j=i+1;j<n;j++) { if(x[j].key<x[small].key) small=j; } if(small!=i) { swap=x[i]; X[i]=x[small]; X[small]=swap;} } } 2. 堆排序 堆就是一个关键字序列:并且这n个关键字的序列K1,K2...Kn要满足以下性质(堆性质),就是: Ki≥K2i且Ki≥K2i+1 或者 Ki≤K2i且Ki≤K2i+1 堆排序基本思想 因为堆顶是最大的数,所以当把一个关键字序列排成一个大根堆时,就很容易地找到最大的数,它就在序列的第一个位置上 然后把这个最大的数与最后一个记录交换,这时,最后一个记录就是关键字最大的记录了。 对于剩下的关键字序列,我们仍然把它排成一个大根堆,然后再把第一个记录(当前堆中的堆顶)与当前堆的最后一个记录交换。这时,在整个序列后面就有了两个有序的关键字(从小到大)。 重复这样的过程,就可以把有序区不断扩大直到全部关键字都进入有序区。直到排序完成。 堆的构造 无序序列r[1:n]构成的完全二叉树。 从它最后一个非叶子结点(第n/2个元素)开始直到根结点为止,逐步进行调整即可将此完全二叉树构成堆。 调整:与其左右子树根结点值比较,取其中大的进行交换。 堆的构造例 调整成堆算法 堆排序 由给定的无序序列构造堆 将堆顶元素与堆中最后一个元素交换 将最后一个元素从堆中删除 将余下的元素构成完全二叉树重新调整成堆 反复进行,直到堆空 堆排序过程示例 堆排序过程 堆排序算法 三、插入排序 每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。 线性插入排序 对半插入排序 哨兵(监视哨) 哨兵(监视哨)有两个作用 作为临时变量存放R[i](当前要进行比较的关键字)的副本, 在查找循环中用来监视下标变量j是否越界。 2、对半插入排序 在有序区中进行对分查找,以确定插入的位置,移动记录腾出空间,将相应关键字的记录插入。 四、交换排序 两两比较待排序记录的关键字,发现两个记录次序相反时即进行交换,直到没有反序的记录为止。 冒泡排序 快速排序 冒泡排序示例 冒泡排序算法 快速排序一趟算法 快速排序例 快速排序算法 五、归并排序 归并排序又称为表排序,其含义是将两个有序序列合并成为一个有序序列。 1、基本思想 设待排序序列有n个记录,开始将其看作是n个长度为1 的有序子文件,然后进行归并,将相邻的有序子文件两两合并,得到n/2个长度为2或1的有序子文件(如果n为奇数,则最后一个有序子文件的长度为1),再两

文档评论(0)

带头大哥 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档