算法分析与设计第四章3(分治法快速分类)课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《算法分析与设计第四章3(分治法快速分类)课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 分析 设计 第四 分治 快速 分类 课件
- 资源描述:
-
1、2008-09-01版权所有:杨波,武汉科技大学理学院 第四章第四章 分治法分治法2008-09-01版权所有:杨波,武汉科技大学理学院 4.5 4.5 快速分类快速分类1.划分与快速分类n 快速分类是一种基于划分的分类方法;n 划分:选取待分类集合A中的某个元素t,按照与t的大小关系重 新整理A中元素,使得整理后t被置于序列的某位置上,而序列中所有在t以前出现的元素均小于等于t,而所有出 现在t以后的元素均大于等于t。这一元素的整理过程称为 划分(Partitioning)。元素t称为划分元素。n 快速分类:通过反复地对待排序集合进行划分达到分类目的的分类算法。2008-09-01版权所有:
2、杨波,武汉科技大学理学院 快速分类的基本思想快速分类的基本思想 对于输入的子数组am:p-1,按以下3个步骤进行排序:n分解(divide):以am为基准元素(假定第一个元素am是划分元素)将am:p-1分成3段am:q-1,aq和aq+1:p-1,使得am:q-1中任何元素小于等于aq,aq+1:p-1中任何元素大于等于aq,下标q 在划分过程中确定。n递归求解(conquer):通过递归调用快速排序算法,分别对am:q-1和aq+1:p-1进行排序。n合并(merge):由于对 am:q-1和aq+1:p-1的排序是就地进行的,所以在am:q-1和aq+1:p-1都已排好序后不需要执行任何
3、计算,am:p-1就已排好序。2008-09-01版权所有:杨波,武汉科技大学理学院 划分过程的算法描述划分过程的算法描述public static int Partition(int m,int p)/在am,am+1,ap-1中的元素按如下方式重新排列:如果最初t=am,则在重排完成之后,/对于m和p-1之间的某个q,有aq=t,并使得对于mkq,有ak t,而对于qkp,有ak t。/退出时返回值为划分元素所在的下标位置 int i,v;/v为划分元素,i为从左到右计数,p从右到左计数 v=am;i=m+1;p=p-1;int temp;/临时交换单元 while(true)while(
4、aiv)p-;/直到不大于v,p向左移动 if(ip)/ai与ap交换位置 temp=ai;ai=ap;ap=temp;else break;am=ap;ap=v;/划分元素在位置p return p;ap被定义,但为一限界值apam,不包含在实际的分类区间内。(技巧技巧:假如是按照从大到小排列,经过Partition算法之后进行从小到大排列,引入ap则程序易于实现)算法对集合am:p-1进行划分元素am作为划分元素2008-09-01版权所有:杨波,武汉科技大学理学院 划分实例(划分实例(1次划分)次划分)12345678910iP65 70 75 80 85 60 55 50 45 100
5、00 2965 45 75 80 85 60 55 50 70 10000 3865 45 50 80 85 60 55 75 70 10000 4765 45 50 55 85 60 80 75 70 10000 5665 45 50 55 60 85 80 75 70 10000 6560 45 50 55 65 85 80 75 70 100005Partition(m,p)=Partition(1,10)划分元素p=52008-09-01版权所有:杨波,武汉科技大学理学院 经过一次“划分”后,实现了对集合元素的调整:以划分元素为界,左边子集合的所有元素均小于等于右边子集合的所有元素。按
6、同样的策略对两个子集合进行分类处理。当子集合分类完毕后,整个集合的分类也完成了。这一过程避免了子集合的归并操作。这一分类方法称为快速分类。2008-09-01版权所有:杨波,武汉科技大学理学院 快速分类算法快速分类算法public static void QuickSort(int p,int q)/将全程数组a1:n中的元素ap,aq按递增的方式分类。/认为an+1已被定义,且大于或等于ap:q的所有元素;即an+1=+int j;if(pq)j=q+1;/每次执行Partition时使用一个右侧附加空间p:q等同与m:p-1 /m=p;p-1=q;j=Partition(p,j);/j是划
7、分元素的位置 QuickSort(p,j-1);/对左半段排序 QuickSort(j+1,q);/对右半段排序 2008-09-01版权所有:杨波,武汉科技大学理学院 全部分类过程全部分类过程12345678916570758085605550452604550556585807570355455060658580757045045556065858075705455055606585807570645505560658580757074550556065708075858455055606570807585945505560657075808510455055606570758085200
8、8-09-01版权所有:杨波,武汉科技大学理学院 快速分类分析快速分类分析n统计的对象:元素的比较次数,记为:C(n)n两点假设q参加分类的n个元素各不相同qPartition中的划分元素v是随机选取的(针对平均情况的分析)n随机选取划分元素:q在划分区间m,p-1随机生成某一坐标:iRandom(m,p-1);q调换am与ai;vai;aiam;im+1;作用:将随机指定的划分元素的值调换到 am位置。算法主体不变。之后,仍从am开始执行划分操作。2008-09-01版权所有:杨波,武汉科技大学理学院 递归层次递归层次QuickSort(1,n)QuickSort(1,j1-1)QuickS
9、ort(j1+1,n)QuickSort(1,j21-1)QuickSort(j21+1,j1-1)QuickSort(j1+1,j22-1)QuickSort(j22+1,n)n个元素参加划分和分类去掉1个第一级的划分元素n-1个元素参加划分和分类去掉2个第二级的划分元素n-3个元素参加划分和分类去掉4个第三级的划分元素第一层第二层第三层 设在任一级递归调用上,调用Partition处理的所有元素总数为r,则,初始时r=n,以后的每级递归上,由于删去了上一级的划分元素,故r比上一级至少1:理想情况,(与前一级相比)第二级少1,第三级少2,第四级少4,;最坏情况,每次仅减少1(每次选取的划分元
10、素刚好是当前集合中最小或最大者)2008-09-01版权所有:杨波,武汉科技大学理学院 最坏情况分析最坏情况分析n记最坏情况下的元素比较次数是Cw(n);n设r是在任一级递归上对Partition的所有调用的元素总数。在一级只有一次调用,执行Partition(1,n+1),且r=n,因此,比较数至多是n+1;在二级至多作两次调用(一次实际不做任何处理),且r=n-1,因此,比较数至多是n等等。因此,在递归的任意一级上,所有的Partition共作r+1次元素比较,而每一级的r,由于删去了前一级的划分元素,故比前一级的r至少要少1。nCw(n)是r由n变到2的和,即Cw(n)=O(n2)。20
11、08-09-01版权所有:杨波,武汉科技大学理学院 最坏情况举例最坏情况举例k01234n-1nn+1ak-n123n-2n-132()1(1)2WWnCnnCnn)()(2nnCW渐近时间复杂度2008-09-01版权所有:杨波,武汉科技大学理学院 最好情况下最好情况下32()2(1)/2)12BBnCnCnnn()(log)BCnnn 渐近时间复杂度2008-09-01版权所有:杨波,武汉科技大学理学院 平均情况分析平均情况分析 平均情况是指集合中的元素以任意顺序排列,且任选元素作为划分元素进行划分和分类,在这些所有可能的情况下,算法执行性能的平均值。设调用Partition(m,p)时,
12、所选取划分元素v恰好是am:p-1中的第i小元素(1ip-m)的概率相等。则经过一次划分,所留下的待分类的两个子文件恰好是am:j-1和aj+1:p-1的概率是:1/(p-m),mjp。记平均情况下的元素比较次数是CA(n);则有:其中,n n+1是Partition第一次调用时所需的元素比较次数。n CA(0)=CA(1)=0nkAAnAknCkCnnC11)()1(1)(1)2008-09-01版权所有:杨波,武汉科技大学理学院 n)1()2()1()1()0(2)1()(nCCCnnnnCAAAA用n-1换(2)中的n(1)(1)(1)2(0)(1)(2)(3)AAAAnCnn nCCC
13、n (2)-(3)1(22)1()1()(nCnnCnnnCAAA即)4()1/(2/)1()1/()(nnnCnnCAA反复使用(4)代换CA(n-1),CA(n-2),得到 2008-09-01版权所有:杨波,武汉科技大学理学院 13/122/)1()1/(2/2)1/(2)2/()3()1/(2/2)1/()2()1/()(nkAAAAkCnnnnnCnnnnCnnC由于 1213)1ln(/1nnknxdxk所以)log()1ln()1(2)(nnnnnCA2008-09-01版权所有:杨波,武汉科技大学理学院 n空间分析n 最坏情况下,递归的最大深度为n-1.n 需要栈空间:O(n)
14、使用一个迭代模型可以将栈空间总量减至O(logn)&最坏时间复杂度:最坏时间复杂度:O(n2)&平均时间复杂度:平均时间复杂度:O(nlogn)&辅助空间:辅助空间:O(n)或或O(logn)2008-09-01版权所有:杨波,武汉科技大学理学院 快速分类算法的迭代模型快速分类算法的迭代模型n处理策略:每次在Partition将文件A(p:q)分成两个文件A(p:j-1)和A(j+1,q)后,先对其中较小的子文件进行分类。当小的子文件分类完成后,再对较 大的子文件进行分类。n栈:需要一个栈空间保存目前暂不分类的较大子文件。并在较小子文件分类完成后,从栈中退出最新的较大子文件进行下一步分类。n栈
15、空间需求量:O(logn)n算法终止:当栈空时,整个分类过程结束。2008-09-01版权所有:杨波,武汉科技大学理学院 QuickSort的迭代模型的迭代模型 public static void QuickSort2(int p,int q)int stack,top,j;stack=new int11;top=0;while(true)while(pq)j=q+1;j=Partition(p,j);if(j-pq-j)stacktop+1=j+1;stacktop+2=q;q=j-1;/左半文件较小先处理 /将大的子文件入栈后处理 else stacktop+1=p;stacktop+2
16、=j-1;p=j+1;/右半文件较小先处理 top=top+2;if(top=0)break;q=stacktop;p=stacktop-1;top=top-2;public static void QuickSort(int p,int q)int j;if(pq)j=q+1 j=Partition(p,j);QuickSort(p,j-1);QuickSort(j+1,q);2008-09-01版权所有:杨波,武汉科技大学理学院 快速分类算法迭代模型的空间分析快速分类算法迭代模型的空间分析设算法所需的最大栈空间是S(n),则有 101)2/)1(2)(nnnSnS2008-09-01版权所
17、有:杨波,武汉科技大学理学院 4.6 4.6 选择问题选择问题1.问题描述问题描述 在n个元素的表a1:n中确定第k小元素,1kn。2.设计思路设计思路 利用Partition过程。在第一次划分后划分元素v测定在aj的位置上,则有j-1个元素小于或等于aj,且有n-j个元素大于或等于aj。此时,n 若k=j,则aj即是第k小元素;否则,n 若kj,则a1:n中的第k小元素将出现在aj+1:n,是aj+1:n中的第k-j小元素。2008-09-01版权所有:杨波,武汉科技大学理学院 利用利用Partition实现的选择算法实现的选择算法public static void Select(int
展开阅读全文