Open Topic TC:7.4 快速排序的栈深度

Slides:



Advertisements
Similar presentations
因数与倍数 2 、 5 的倍数的特征
Advertisements

3 的倍数的特征 的倍数有 : 。 5 的倍数有 : 。 既是 2 的倍数又是 5 的倍数有 : 。 12 , 18 , 20 , 48 , 60 , 72 , , 25 , 60 ,
2.8 函数的微分 1 微分的定义 2 微分的几何意义 3 微分公式与微分运算法则 4 微分在近似计算中的应用.
第八章 第四节 机动 目录 上页 下页 返回 结束 一个方程所确定的隐函数 及其导数 隐函数的微分法.
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
平面构成 第六章 平面构成形式与法则 — 破规与变异. 第七章 平面构成形式与法则 — 破规与变异 破规与变异构成的形式、有下列四类: 一、特异构成 特异构成。其表现特征是,在普遍相同性质的事物 当中,有个别异质性的事物,便会立即显现出来。
信号与系统 第三章 傅里叶变换 东北大学 2017/2/27.
新編多元性向測驗 測驗說明 輔導室
圆的一般方程 (x-a)2 +(y-b)2=r2 x2+y2+Dx+Ey+F=0 Ax2+Bxy+Cy2+Dx+Ey+ F=0.
在《命运交响曲》 音乐声中 安静我们的心 迎接挑战.
第六节 心律失常 蚌埠医学院附属医院诊断学教研室.
101年國中畢業生多元進路宣導 國中部註冊組 100年10月29日.
高中職優質化專題 教育研究博士班二年級 游宗輝.
海星國中部直升方案說明 報告人:教務處 陳博文主任
101年度十二年國民基本教育 國民中學校長專業研習 校長落實補救教學、適性輔導 中輟生的預防與復學輔導之實務作為
班級:行流四甲 組員:497D0004何筱瑩 497D0016鄧宜欣 497D0044呂亭儀 497D0056黃 琪 497D0063賴依淩
关于职教发展的几个理念 上海市教育科学研究院 周亚弟.
歡迎各位老師 蒞校參訪 召集人、各位委員、同仁大家好,我是林淑玟,負責教務行政進行簡報 報告人:林淑玟 中華民國九十九年三月二十三日.
大學甄選入學 選填志願輔導說明會 曾文農工輔導室.
一所具有悠久歷史與優良傳統的 優質學校 強調生活教育與精緻教學 是您有心向學的最佳選擇.
國立嘉義高級工業職業學校 101年度綜合高中宣導研習 國立嘉義高工 教務主任 林章明
海軍軍官學校 士官二專班 招生簡報 、 第1頁,共30頁.
海軍軍官學校 士官二專班 103學年度 招生簡報.
小学生游戏.
网络信息资源的开发与设计 主讲教师 罗双兰 广西师范大学教育科学学院.
恰当方程(全微分方程) 一、概念 二、全微分方程的解法.
高等数学电子教案 第五章 定积分 第三节 微积分基本定理.
一、原函数与不定积分 二、不定积分的几何意义 三、基本积分公式及积分法则 四、牛顿—莱布尼兹公式 五、小结
第二节 微积分基本公式 1、问题的提出 2、积分上限函数及其导数 3、牛顿—莱布尼茨公式 4、小结.
第四章 函数的积分学 第六节 微积分的基本公式 一、变上限定积分 二、微积分的基本公式.
第5章 定积分及其应用 基本要求 5.1 定积分的概念与性质 5.2 微积分基本公式 5.3 定积分的换元积分法与分部积分法
第三节 格林公式及其应用(2) 一、曲线积分与路径无关的定义 二、曲线积分与路径无关的条件 三、二元函数的全微分的求积 四、小结.
2-7、函数的微分 教学要求 教学要点.
中学生心理健康讲座 打开心灵之门 开启阳光之路 主讲人:范荃.
教育部宣導專員 國立臺中家商 許敏政主任 101年2月23日製作 #201~203
第5章 §5.3 定积分的积分法 换元积分法 不定积分 分部积分法 换元积分法 定积分 分部积分法.
强连通分量 无向图 1、任意两顶点连通称该图为连通图 2、否则将其中的极大连通子图称为连通分量 A D C B E 有向图
Cyclic Hanoi问题 李凯旭.
计算机数学基础 主讲老师: 邓辉文.
§2 求导法则 2.1 求导数的四则运算法则 下面分三部分加以证明, 并同时给出相应的推论和例题 .
織物的認識 演示者:陳明玲 美容科:家政概論.
十二年國民基本教育 103學年度高中高職及五專 入學方式與就學區規劃 (草案諮詢稿)
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
线段的有关计算.
顺序表的删除.
⑴当∠MBN绕点B旋转到AE=CF时(如图1),比较AE+CF与EF的大小关系,并证明你的结论。
高中職多元進路 家長說明會 主講人: 東莞台商子弟學校 麥馨月 日 期:
信号量(Semaphore).
美麗的西子湖.
正切函数的图象和性质 周期函数定义: 一般地,对于函数 (x),如果存在一个非零常数T,使得当x取定义域内的每一个值时,都有
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
1.2 子集、补集、全集习题课.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
第二节 函数的极限 一、函数极限的定义 二、函数极限的性质 三、小结 思考题.
正弦、余弦函数的性质 华容一中 伍立华 2017年2月24日.
國立嘉義高級工業職業學校 101年度雲嘉區綜合高中宣導研習 國立嘉義高工 綜高高中學務組長 呂明欣
欢迎大家来到我们的课堂 §3.1.1两角差的余弦公式 广州市西关外国语学校 高一(5)班 教师:王琦.
第三节 函数的微分 3.1 微分的概念 3.2 微分的计算 3.3 微分的应用.
基于列存储的RDF数据管理 朱敏
第二部分 导数与微分 在课程简介中已经谈到, 高等数学就是微积分(微分 + 积分). 对于一元函数来说, 微分本质上就是导数. 这一部分内容是“导数与微分”. 由此可见, 这一部分内容在本课程中的重要地位. 我们是在极限的基础之上讨论函数的导数和微分的. “导数与微分”是每个学习高等数学的人必须掌握的内容.
第四节 向量的乘积 一、两向量的数量积 二、两向量的向量积.
99年基測暨直升、原藝班、 申請、甄選入學報名作業說明
第四章 函数的 积分学 第七节 定积分的换元积分法     与分部积分法 一、定积分的换元积分法 二、定积分的分部积分法.
插入排序的正确性证明 以及各种改进方法.
§4.5 最大公因式的矩阵求法( Ⅱ ).
§2 自由代数 定义19.7:设X是集合,G是一个T-代数,为X到G的函数,若对每个T-代数A和X到A的函数,都存在唯一的G到A的同态映射,使得=,则称G(更严格的说是(G,))是生成集X上的自由T-代数。X中的元素称为生成元。 A变, 变 变, 也变 对给定的 和A,是唯一的.
臺灣北區102學年度高級中等學校 舞蹈班暨聯合甄選入學術科測驗 暨甄選入學說明會
台中市黎明國中105學年度 學生報考 一般智能暨學術性向資賦優異學生鑑定 報名流程說明
Presentation transcript:

Open Topic TC:7.4 快速排序的栈深度 徐臣 171180558

TAIL_RECUSION_QUICKSORT(A,p,r) { while(p<r) { int q=PARTITION(p,r); TAIL_RECUSION_QUICKSORT(A,p,q-1); p=q+1; }

首先我们得知道所有的递归程序都是通过栈来实现的 首先执行的上层递归,在执行下层递归时被压入栈中,在下层递归执行完了(即出栈),再执行 上层递归的剩余部分后将上层递归出栈。

A:证明尾递归的正确性 由前证已知PARITION(A,p,r)后得到的q上的数位置不再改变, 令 Q 为命题,当TAIL-recursive-quicksort(A,p,r) 执行后,p-r 上所有元素已确定其位置,即完成排序。 可知对于任意p,r=p 时,Q 恒成立,此包含r=p=1时。 r>p 时,假设 对于任意 1<=p0<=r0<=r , 有 Q 成立, 定义不变式 I :当while 执行至 p=q+1 后,op-p-1 已排好序(因p会被改变,先设op=p 最开始时) 证明:循环前,p<op 为空集, Q成立。 循环中,在q=PARTITION 之前有op-p已排好序,后执行TAIL-recursive-quicksort(A,p,q-1)后可知 p-q-1已确定位置, 又有op-p确定位置,两者答案可直接合并故op-q-1都确定位置,又有PARTITON得q位置确定,则I得证 又可知q递增且q<=r,p=q.故循环一定终止 由I得 循环完成后,p>=r 则 p-1可能小于r,当p=r 时可知,op-r-1 都已排好序且位置不变,那么r上的数的位置只有r一 种可能,故亦为排好序的,p=r+1时则为op-r排序完成。 则Q得证。

B: 描述栈深度为Θ(n)的情况: 即程序在while循环中连续执行了Θ(n)次,不妨只研究n次的情况 那么第一层入栈就为TAIL-recursive-quicksort(A,1,A-length) 可知该函数直接出栈条件为p=r(无while循环的执行) 且可知每次执行压栈(即while循环)时,有q-1-p<r-1-p<r-p故其区间长度一定减小。 此时有: 1 压栈即减小区间长度 2 区间长度为最初为n 区间长度为0 则开始出栈 那么最大压栈数即 每次压栈只减少1的区间长度,此时栈深度最深为 n=Θ(n) 具体情况为每一次PARTITION得到的q 都为n ,即每一次都将最大的数的位置固定

C:改进方法 考虑每一次PARTITION后的 TAIL….函数的执行 PARTITION将原区间划分为 (p,q-1),{q},(q+1,r) 原函数固定选择前一种区间进行递归, 此处我们增加一个比较操作 比较(p,q-1),(q+1,r)的区间大小即q-1-p和 r-q-1的大小, 每次选择区间长度更小的那一个进行递归函数TAIL…的执行。 这样之后我们有对于任意一次TAIL函数,设其所含区间长度为x 则有The_next_TAIL…._A_length <=x/2. 那么栈中上一层的区间长度一定小于等于下一层的1/2. 设最高层数为p 则有长度为1. 那么 1<=A_length(p-1)/2<(A_length(p-2)/2)/2<=…..A_length(1)/(2^p)<=n. 则 p<log n .即递归层数为Θ(log n)

算法的复杂度,可知每一次我们执行一个比较操作我们执行一次Tail函数,单次比较的执行为Θ (1),考虑TAIL函数总执行次数,可知其 <=n,则比较操作的最坏复杂度为Θ(n)。 再考虑除开比较函数的复杂度,此处的复杂度证明于原先的书中快速排序的复杂度证明相同,为Θ (nlogn)。 故总复杂度为Θ(n+nlogn)为Θ(nlogn)

一点小小的启发(雾) :当遇到区间的划分操作,且执行代价与区间长度(大小)息息相关时,每次选择更小(或者更大, 依赖代价与区间大小的关系)往往会使得代价的期望值得到质的改变,原因便是一次比较便能使代 价依赖于某一个固定常数,在递归中其更恐怖为常数的层数次方(如这里)。所以这种思考方式在 许多地方都有极大的用途。 推荐例子: 启发式合并(尤其于并查集但不限于并查集,数据结构的合并都可以这样) 在这个例子中你会发现,原本极其暴力的操作加上一个简单的判断,会在时间变得极其优秀, 甚至不符合其暴力做法的本质 2333

thx