知识大全 排序 - 交换排序 - 快速排序 (三)
Posted 结点
篇首语:别裁伪体亲风雅,转益多师是汝师。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 排序 - 交换排序 - 快速排序 (三)相关的知识,希望对你有一定的参考价值。
快速排序执行过程
快速排序执行的全过程可用递归树来描述
>
>
分析
( )递归执行的路线如图中带箭头的包络线所示
( ) 递归树上每一结点左旁方括号表示当前待排序的区间 结点内的关键字是划分的基准关键字
注意
叶结点对应的子区间只有一个关键字 无须划分 故叶结点内没有基准关键字
( ) 划分后得到的左 右两个子区间分别标在该结点的左 右两个孩子结点的左边方括号内
【例】根结点左旁方括号[ ]表示初始待排序的关键字 根内的 表示所选的划分基准记录的关
键字 划分结果是[ ] [ _] 其左右子区间分别标在根结点的两个孩子的左边
( ) 每个分支结点右旁圆括号中的内容表示对该结点左旁区间的排序过程结束之后返回的结果 它是其左右孩子对应的区间排
序完成之后 将左右孩子对应的排序结果分别放在该分支结点的关键字前后所得到的关键字序列
【例】分支结点 的左右孩子对应的区间排序后的结果分别是( _ )和( ) 将它们分别放在 的前后即得(
) 这是对结点 左旁区间[ ]排序的结果
( ) 算法的执行顺序是递归树中的箭头顺序 实际上当把划分操作视为访问结点的操作时 快速排序的执行过程相当于是先序
遍历其递归树
注意
任何递归算法均可用递归树来描述其执行过程
快速排序各次划分后的状态变化
[ ] //初始关键字
[ ] [ ] //第 次划分完成之后 对应递归树第 层
[ ] [ ] [ ] [ ] //对上一层各无序区划分完成后 对应递归树第 层
[ ] //对上一层各无序区划分完成后 对应递归树第 层
//最后的排序结果
cha138/Article/program/sjjg/201311/23786相关参考
快速排序 快速排序(QuickSort)通过一趟排序将待排记录分割成独立的两部分其中一部分记录的关键字均比另一部分记录的关键字小则可分别对这两部分记录继续进行排序以达到整个序列有序快速排序三个步骤
算法分析 快速排序的时间主要耗费在划分操作上对长度为k的区间进行划分共需k次关键字的比较 ()最坏时间复杂度 最坏情况是每次划分选取的基准都是当前无序区中关键字最小(或最大)的记录划分的结果
划分算法Partition ()简单的划分方法 ①具体做法 第一步(初始化)设置两个指针i和j它们的初值分别为区间的下界和上界即i=lowi=high;选取无序区的第一个记录 R[i](即
交换排序的基本思想是两两比较待排序记录的关键字发现两个记录的次序相反时即进行交换直到没有反序的记录为止 应用交换排序基本思想的主要排序方法有冒泡排序和快速排序 冒泡排序 排序方法 将被排序
交换排序的基本思想两两比较待排序记录的关键字发现两个记录的次序相反时即进行交换直到没有反序的记录为止 冒泡排序 冒泡排序将当前未排序的记录自上而下依次对相邻的两个记录进行比较若为逆序则
排序是组织数据最基本的运算排序的方法也很多本章给出了几种典型的排序方法见下表 排序类别插入排序交换排序选择排序归并排序分配排序 排序方法直接插入冒泡法直接选择*归并排序箱排序 希尔排序*快速
算法分析 ()算法的最好时间复杂度 若文件的初始状态是正序的一趟扫描即可完成排序所需的关键字比较次数C和记录移动次数M均达到最小值 Cmin=n Mmin= 冒泡排序最好的时间复杂度为O
选择排序(SelectionSort)的基本思想是每一趟从待排序的记录中选出关键字最小的记录顺序放在已排好序的子文件的最后直到全部记录排序完毕 直接选择排序 直接选择排序(Straig
.就排序算法所用的辅助空间而言堆排序快速排序归并排序的关系是( )【西安交通大学三(分)】 A.堆排序〈 快速排序〈归并排序 B.堆排序
堆排序 堆的定义n个元素的序列kk…kn)当且仅当满足以下关系时称之为堆 若将和序列kk…kn)对应的一维数组(即以一维数组作此序列的存储结构)看成是一个完全二