版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
8内排序(8.1-•排序问题的基本概•排序(S排序•选择排序(堆排序•交换排–8.4.1冒泡排–8.4.2快速排•归并排•分配排序和索引排•排序算法的时间代内排序(8.1- 馆员书 、上奖学大考试成榜排列图输入法排内排序(8.1- 排序:指的是待排序记录存放在计算机随机 外部排序指的是待排序记录的数量很大,以致内存一的排序过程内排序(8.1- 小规模的排序问题-内排一个元已经有序两个元一次比若逆序一次交3次移动(赋值n个元素内排序(8.1- 8.1记录结点,进行排序的基本单关键码唯一确定记录的一个或多个排序码(Sort作为排序运算依据的一个或多个–由记录组内排序(8.1- 给定一个序列Rr1r2–其排序码分别为kk1k2排序的目的:将记录按排序–形成新的有序序列R'–相应排序码为排序码的顺–其中k'1≤k'2≤…≤k'n,称为不减–或k'1≥k'2≥…≥k'n,称为不增内排序(8.1- 正序vs.“正序”序列待排序序列正好符合排序要“逆序”序列逆序正序–逆序正序––内排序(8.1- 稳定
存在多个具有相同排序码的记排序后这些记录的相对次序保持不稳定性例– 96稳定–内排序(8.1- 稳定
存在多个具有相同排序码的记排序后这些记录的相对次序保持不稳定性例
不稳––––稳定–形式化证不稳定,反例说––内排序(8.1- 时间代记录的比较和移动次空间代算法本身的繁杂内排序(8.1- 对记录的排序码进行比较和记录的移动过最小时间代最大时间代平均时间代
内排序(8.1-
•排序问题的基本概•排序(S排序•选择排序(堆排序•交换排–8.4.1冒泡排–8.4.2快速排•归并排•分配排序和索引排•排序算法的时间代内排序(8.1- 直 排思想 利用有序表 操作进行排 :将一个记录 例,序列 内排序(8.1- 内排序(8.1- template 排序算voidInsertSort(RecordArray[],intn)//Array[]为待排序数组,n为数组长Record 临时变for(inti=1;i<n;i++) //依 第i个记TempRecord=intj=i-1;//将那些大于等于记录i的记录后while((j>=0) (TempRecord<Array[j]))Array[j+1]= j=j-}//此时j后面就是记录i的正确位置Array[j+1]=}}内排序(8.1- 稳空间代价时间代价情况:比较次数
ii
n(n1)/
(n2移动次数
i
(n2平均情况
内排序(8.1- 8.2.2 直 排序的两个性质对于短序列,直 排序比较有 内排序(8.1- 列内进行排序逐渐扩大小序列的规模,而减少小序列个数,使得待排序序列逐渐处于更有序的状态最后对整个序列进行扫尾直接排序,内排序(8.1- 内排序(8.1- 排template<classvoid Sort(RecordArray[],intn) 排序,Array[]为待排序数组,n为数组长inti,//增量delta每次除以2递for(delta=n/2;delta>0;delta/=for(i=0;i<delta;//分别对delta个子序列进 排//“&”传Array[i]的地址,数组总长度为n-ModInsSort(&Array[i],n-i,如果增量序列不能保证最后一个delta间距为可以安排下面这个扫尾性质的排ModInsSort(Array,n,}内排序(8.1- 针对增量而修改 template<classvoidModInsSort(RecordArray[],intn,intdelta)//修改 排序算法,参数delta表示当前的增inti,for(i=delta;i<n;i+=//对子序列中第i个记录,寻找合适 位for(j=i;j>=delta;j-=delta)j以dealta为步长向前寻找逆置对进行调if(Array[jArray[j- 置swap(Arrayjj- else}}内排序(8.1- 不稳空间代价增量每次除以2递减,时间代价内排序(8.1- 增量每次除以2递减”时,效率仍然为问题:选取的增量之间并不互内排序(8.1- Hibbard增量序–{2k-1,2k-1- –如knuth的方法n/3-内排序(8.1- 8.38.3.1直接选择排直接与数组中第i个记录交换,比冒泡排序8.3.2堆排堆排序:基于最大值堆来实内排序(8.1- 内排序(8.1- template<classvoidSelectSort(RecordArray[],intn)//依次选出第i小的记录,即剩余记录中最小的那for(inti=0;i<n-1;i++)//首先假设记录i就是最小intSmallest=//开始向后扫描所有剩余记for(intj=i+1;j<n;//如果发现更小的记录,记录它的位if(Array[j]<Smallest=//将第i小的记录放在数组中第i个位swap(Array,i,}}内排序(8.1- 不稳定(见上面的例子空间代价时间代比较次数:Θ(n2),与冒泡排序一交换次数:n-内排序(8.1- 8.3.2选择类内排直接选择排序直接从剩余记录中线性查找最大记堆排序基于最大值堆来实现,效率更选择类外排置换选择排赢者树、败方内排序(8.1- 内排序(8.1- 内排序(8.1- 内排序(8.1- 内排序(8.1- template<classvoidsort(RecordArray[],intn)intMaxHeap<Record>max_heap=MaxHeap<Record>(Array,n,n堆//算法操作n-1次,最小元素不需要出for(i=0;i<n-1;//依次找出剩余记录中的最大记录,即堆max_heap.}内排序(8.1- 例,序列 按顺序依次构造成完全二叉树的结点把完全二从下向上,父子交换7取得最小值7删除13取得次小值删除27,重新改造成新堆取得次次小值内排序(8.1- 建堆删除堆顶重新建:Θ(log一次建堆,n次删除总时间代价为Θ(nlog空间代价为内排序(8.1- 二分 算法思想 内排序(8.1- 二分 由于直 排序算法利用了有序表 操作 234设已形成有序表{ } 234设已形成有序表{ }
内排序(8.1- 二分 void emTypeR[],int{for(inti=1;i<ni++)//共进行n-1 intleft=0,right=i-1;Ele
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纸制蛋糕顶饰商业机会挖掘与战略布局策略研究报告
- 裘皮外套细分市场深度研究报告
- 河南省开封市金科新未来2024-2025学年高三上学期10月联考数学试题 含解析
- 人流控制栅栏出租行业营销策略方案
- 制罐头用非电压力锅产业链招商引资的调研报告
- 写字台产品供应链分析
- 美容乳液市场发展前景分析及供需格局研究预测报告
- 球棒市场发展前景分析及供需格局研究预测报告
- 电动碾磨机产品供应链分析
- 不间断电源产品供应链分析
- 2024版软件服务采购合同
- 短视频运营部门岗位职责说明及KPI绩效考核指标(抖音短视频运营团队KPI绩效考核体系)
- 幼儿园中班语言课件:《秋天的颜色》
- 一例毒蘑菇中毒患者的护理查房课件
- 无人机应用技术专业教学资源库可研报告
- 2024年上海市普通高中学业水平等级性考试化学试卷(含答案)
- 公园维修施工组织设计方案方案
- 辅警劳动合同辅警劳动合同
- 2024届高考英语作文复习专项:读后续写“自我成长”类范文12篇 讲义素材
- 《食品原料学》课件-第二章 粮油食品原料
- 2024版水土保持监理合同
评论
0/150
提交评论