数据结构第03章-排序课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数据结构第03章-排序课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 03 排序 课件
- 资源描述:
-
1、数据结构(数据结构(C+版)版)n 第1章 绪论 第2章 线性表 第3章 排序 第4章 串 第5章 栈与队列 第6章 数组和广义表 第7章 树和二叉树 第8章 查找 第9章 图 第10章 综合应用设计第3章 排序 3.1 排序的基本概念 3.2 插入排序 3.3 交换排序 3.4 选择排序 3.5 归并排序数据结构(C+版)叶核亚3.1 排序的基本概念1数据序列数据序列(datalist)是待排序的数据元素的有限集合。2关键字通常数据元素由多个数据项组成,以其中某个数据项作为排序依据,则该数据项称为关键字(key)。3排序算法的性能评价排序算法的时间复杂度:指算法执行中的数据比较次数、数据移动
2、次数与待排序数据序列的元素个数n之间的关系。排序算法的空间复杂度:指算法执行中,除待排序数据序列本身所占用的内存空间外,需要的附加内存空间与待排序数据序列的元素个数n之间的关系。数据结构(C+版)叶核亚4排序算法的稳定性在数据序列中,如果有两个数据元素ri和rj,它们的关键字ki等于kj,且在未排序时,ri位于rj之前。如果排序后,元素ri仍在rj之前,则称这样的排序算法是稳定的(stable),否则是不稳定的排序算法。5内排序与外排序内排序:在待排序的数据序列中,数据元素个数较少,整个排序过程中所有的数据元素都可以保留在内存,则这样的排序称为内排序。外排序:待排序的数据元素非常多,以至于它们
3、必须存储在磁盘等外部存储介质上,则这样的排序称为外排序。显然,外排序过程中需要多次访问外存。数据结构(C+版)叶核亚3.2 插入排序插入排序(insertion sort)的基本思想是:每趟将一个待排序的数据元素,按其关键字大小,插入到已排序的数据序列中,使得插入后的数据序列仍是已排序的,直到全部元素插入完毕。3.2.1 顺序表的直接插入排序3.2.2 单链表的直接插入排序3.2.3 希尔排序数据结构(C+版)叶核亚3.2.1 顺序表的直接插入排序518765432table(a)k=5,i=1,插入535(b)k=3,在子序列5中查找,i=1,5向后移动,插入3253(c)k=2,在3,5中
4、查找,i=1,3,5向后移动,插入227543(e)k=7,在2,3,4,5中查找,i=5,插入7(f)k=1,在2,3,4,5,7中查找,i=1,2,3,4,5,7向后移动,插入11754322543(d)k=4,在2,3,5中查找,i=3,5向后移动,插入4序号iiiiii1234521数据结构(C+版)叶核亚例3-1 顺序表的直接插入排序的算法设计与实现。#include#include /其中定义随机数函数void output(int table,int n)/输出数组的n个元素 cout table:;for(int i=0;in;i+)couttablei ;coutendl;v
5、oid insertsort(int table,int n)/n个随机数直接插入排序 /已排序数据存放在table数组 for(int i=0;in;i+)/n-1趟排序,依次插入n-1个数 int k=rand()%20;/产生一个020之间的随机数 coutk=kt ;数据结构(C+版)叶核亚直接插入排序算法分析1.直接插入排序的平均比较次数为 2.平均移动次数为3.直接插入排序的时间复杂度为O(n2)。4.直接插入排序算法是稳定的。ninnniC12241434121ninnniM1244)1(2数据结构(C+版)叶核亚3.2.2 单链表的直接插入排序 1 4 3 (d)中间插入qph
6、ead(a)空表插入 1 head(b)头插入 2head 1 q 2(c)尾插入 2head 1 3 pqhead数据结构(C+版)叶核亚单链表直接插入排序#include /包含rand函数#include Onelink.h /单链表类void insert_sorted(Onelink&h1,int k)/k值插入已排序的单链表h1 /引用类型参数 OnelinkNode*t=new OnelinkNode(k);/创建k值结点t if(h1.head=NULL)/空表插入 h1.head=t;/改变单链表的头指针 else if(kdata)/表头插入 t-next=h1.head;
7、h1.head=t;/改变单链表的头指针 else /表中、表尾插入数据结构(C+版)叶核亚3.2.3 希尔排序图3-3 希尔排序算法描述8561972318765432table87639521jj+jumpi(a)jump=4(b)jump=2,j=1,交换jj+jump27639581jj+jumpi(d)jump=2,j=4,交换123416543227639581jj+jumpi(c)jump=2,j=2,不交换,j=3,不交换27659381jj+jump18765432i(e)jump=2,j=5,交换27956381jj+jumpi(f)jump=2,j=3,交换2795836
8、1ji(g)jump=2,j=6,不交换j+jump19876532(h)jump=11654327序号数据结构(C+版)叶核亚希尔排序算法描述希尔排序算法共有三重循环最外层循环while语句控制增量jump,初值为数组长度n的一半,以后逐次减半(jump=jump/2),直至为1。中间循环for语句进行一轮相隔jump的元素进行比较、交换。最内层循环while语句,设j是数组元素的下标,将元素tablej与相隔jump的元素tablejjump进行比较,如果两者是反序的,则执行swap(table,j,j+jump)交换两个元素。重复往前与相隔jump的元素再比较、交换,j=jjump,当t
展开阅读全文