数据结构之排序算法讲义ppt课件.ppt





《数据结构之排序算法讲义ppt课件.ppt》由会员分享,可在线阅读,更多相关《数据结构之排序算法讲义ppt课件.ppt(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1065865姓名姓名 学号学号 成绩成绩 班级班级 李红李红 9761059 95 机机97.6 ABCDEFG2022-8-122注意带以下内容:注意带以下内容:1. 图图2-8-12. 图图2-8-23. 图图2-8-34. 图图2-8-45. 图图2-8-52022-8-123第二章第二章 数据结构与算法数据结构与算法(续续) 2022-8-1242.8 排排 序序2.8.1 概概 述述1、排序的功能:、排序的功能:将一个数据元素(或记录)的将一个数据元素(或记录)的任意任意序列序列,重新排成一个按关键字,重新排成一个按关键字有序有序的序列。的序列。2、排序过程的组成步骤:、排序过程的
2、组成步骤: 首先首先比较比较两个关键字的大小;两个关键字的大小; 然后将记录从一个位置然后将记录从一个位置移动移动到另一个位置。到另一个位置。2022-8-125假设待排序的记录存放在地址连续的假设待排序的记录存放在地址连续的一组存储单元中,那么这种存储方式一组存储单元中,那么这种存储方式下的数据类型可描述为:下的数据类型可描述为: MAX01234keyinfo#define MAX 20 typedef struct int key; float otherinfo; RedType;2022-8-126排序方法排序方法插入排序插入排序选择排序选择排序交换排序交换排序归并排序归并排序直接插
3、入排序直接插入排序折半插入排序折半插入排序简单选择排序简单选择排序堆排序堆排序起泡排序起泡排序快速排序快速排序2022-8-1272.8.2 插入排序插入排序 直接插入、折半插入直接插入、折半插入1、直接插入排序、直接插入排序:基本思想:基本思想:从数组的第从数组的第2号元素开始,顺号元素开始,顺序从数组中取出元素,并将该元素插入序从数组中取出元素,并将该元素插入到其左端已排好序的数组的适当位置上。到其左端已排好序的数组的适当位置上。举例:图举例:图8-2-12022-8-1282.8.2 插入排序插入排序 直接插入、折半插入直接插入、折半插入该算法适合于该算法适合于n 较较小的情况,时间复小
4、的情况,时间复杂度为杂度为O(n2).1、直接插入排序、直接插入排序:基本思想:基本思想:从数组的第从数组的第2号元素开始,顺序从数组中取出元素,号元素开始,顺序从数组中取出元素,并将该元素插入到其左端已排好序的数组的适当位置上并将该元素插入到其左端已排好序的数组的适当位置上待排元素序列:待排元素序列:53 27 36 15 69 42第一次排序:第一次排序: 27 53 36 15 69 42第二次排序:第二次排序: 27 36 53 15 69 42第三次排序:第三次排序: 15 27 36 53 69 42第四次排序:第四次排序: 15 27 36 53 69 42第五次排序:第五次排序
5、: 15 27 36 42 53 69 直接插入排序示例直接插入排序示例对于有对于有n个数个数据元素的待排据元素的待排序列,插入操序列,插入操作要进行作要进行n-1次次2022-8-129void insertSort(RedType L ,int n) int i ,j; for(i=2; i=n; i+) if(Li.keyLi-1.key) L0=Li; /* 作为监视哨作为监视哨*/ for( j=i-1; L0.keyLj.key; j ) Lj+1=Lj; /* 记录后移记录后移*/ Lj+1=L0; /* 插入插入 */ 插入算法如下:插入算法如下:方法方法:Ki与与Ki-1,K
6、 i-2,K1依次比较依次比较,直到找到应插入的位置。直到找到应插入的位置。2022-8-12102、折半插入排序、折半插入排序 折半插入排序在寻找插入位置时,不是逐折半插入排序在寻找插入位置时,不是逐个比较而是利用折半查找的原理寻找插入位置个比较而是利用折半查找的原理寻找插入位置 。待排序元素越多,改进效果越明显。待排序元素越多,改进效果越明显。折半插入排序的条件:折半插入排序的条件: 在有序序列中插入一个关键字。在有序序列中插入一个关键字。举例,图8-2-22022-8-12112、折半插入排序、折半插入排序 折半插入排序在寻找插入位置时,不是逐个比较而是利用折半折半插入排序在寻找插入位置
7、时,不是逐个比较而是利用折半查找的原理寻找插入位置。待排序元素越多,改进效果越明显。查找的原理寻找插入位置。待排序元素越多,改进效果越明显。例:有例:有6个记录,前个记录,前5 个已排序的基础上,对第个已排序的基础上,对第6个记录排序。个记录排序。 15 27 36 53 69 42 low mid high 15 27 36 53 69 42 low high mid 15 27 36 53 69 42 high low 15 27 36 42 53 69 (high36 )( 4253 )2022-8-1212void BinsertSort(RedType L ,int n) int i
8、,low,high,mid; for(i=2; i=n; +i) L0=Li; /* r0作为监视哨作为监视哨*/ low=1; high=i-1; While(low=high) mid=(low+high)/2; if (L0.key=high+1; j ) Lj+1=Lj; /* 记录后移记录后移*/ Lhigh+1=L0; /* 插入插入*/ /* for*/ /*折半插入排序折半插入排序*/折半插入排序减少折半插入排序减少了关键字的比较次了关键字的比较次数,但记录的移动数,但记录的移动次数不变,其时间次数不变,其时间复杂度与直接插入复杂度与直接插入排序相同。排序相同。/*折半后的位置
9、折半后的位置*/2022-8-1213 1、简单选择排序、简单选择排序思想:首先从思想:首先从1n个元素中选出关键字个元素中选出关键字最小最小的记录交的记录交换到换到第一个第一个位置上。然后再从第位置上。然后再从第2 个到第个到第n个元素中个元素中选出次小的记录交换到选出次小的记录交换到第二个第二个位置上,依次类推。位置上,依次类推。时间复杂度为时间复杂度为O(n2),适用于适用于待排序元素较少待排序元素较少的情况。的情况。2.8.3 选择排序选择排序 简单选择排序、堆排序简单选择排序、堆排序举例:图举例:图8-2-32022-8-12142.8.3 选择排序选择排序 简单选择排序、堆排序。简
10、单选择排序、堆排序。 1、简单选择排序、简单选择排序思想:首先从思想:首先从1n个元素中选个元素中选出关键字出关键字最小最小的记录交换到的记录交换到第第一个一个位置上。然后再从第位置上。然后再从第2 个个到第到第n个元素中选出次小的记个元素中选出次小的记录交换到录交换到第二个第二个位置上,依次位置上,依次类推。类推。时间复杂度为时间复杂度为O(n2),适用于适用于待排序元素较少待排序元素较少的情况。的情况。初态初态8 3 9 1 6 8 3 9 1 6 8 3 9 1 6 8 3 9 1 6 ijkijkijkijk1 3 9 8 6 互换互换ijk1 3 9 8 6 ikj1 3 9 8 6
11、 ikj第一趟第一趟第二趟第二趟1 3 9 8 6 i kj第三趟第三趟2022-8-1215简单选择排序的算法如下:简单选择排序的算法如下:void SelectSort( RedType L ,int n) int i,j,k,t; for (i=1,i=n;+i) /*选择第选择第i小的元素,并交换到位小的元素,并交换到位*/ k=i; for(j=i+1;j=n;+j) if ( Lj.keyLk.key) k=j; /*Lk 中存放的是第中存放的是第I小的元素小的元素*/ if(k!=i) t=Li; /*交换交换*/ Li=Lk; Lk=t ; /*FOR*/ /* SelectS
12、ort*/2022-8-1216 2 堆排序堆排序也是一种选择排序。是具有特定条件的顺序存储也是一种选择排序。是具有特定条件的顺序存储的完全二叉树,其特定条件是:的完全二叉树,其特定条件是:任何一个非叶子结点的关键字任何一个非叶子结点的关键字大于等于(或小于等于)子女的关键字的值。大于等于(或小于等于)子女的关键字的值。 (1) 堆的示例堆的示例 897624331510112536497856(a):堆顶元素取最大值堆顶元素取最大值(b):堆顶元素取最小值堆顶元素取最小值(2) 实现堆排序需解决两个问题:实现堆排序需解决两个问题: (1) 如何由一个无序序列建成一个堆?如何由一个无序序列建成
13、一个堆? (2) 输出堆顶元素后,如何将剩余元素调整成一个新的堆?输出堆顶元素后,如何将剩余元素调整成一个新的堆? 举例:图举例:图8-2-42022-8-1217 (3) 输出堆顶元素并调整建新堆的过程输出堆顶元素并调整建新堆的过程(筛选筛选)6525365649784111(b)65365649784111(c)251125365649784165(a)25493656657841(d)11把自堆顶至叶子的调整过程称为把自堆顶至叶子的调整过程称为“筛选筛选。从一个无序序。从一个无序序列建堆的过程就是一个反复列建堆的过程就是一个反复”筛选筛选“的过程。的过程。2022-8-1218(4)由无
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 排序 算法 讲义 ppt 课件

限制150内