算法分析与设计第四章3(分治法快速分类).ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《算法分析与设计第四章3(分治法快速分类).ppt》由会员分享,可在线阅读,更多相关《算法分析与设计第四章3(分治法快速分类).ppt(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章 分治法分治法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都已排好序后不需要执行任何计算,am:p-1就已排好序。2008-09-01版权所
3、有:杨波,武汉科技大学理学院 划分过程的算法描述划分过程的算法描述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(aiv)p-;/直到不大于v,p向左移动 if(ip)/
4、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 10000 2965 45 75 80 85 60 55 50
5、 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是划分元素的位置 QuickSort(p,j-1);/对左半
7、段排序 QuickSort(j+1,q);/对右半段排序 2008-09-01版权所有:杨波,武汉科技大学理学院 全部分类过程全部分类过程123456789165707580856055504526045505565858075703554550606585807570450455560658580757054550556065858075706455055606585807570745505560657080758584550556065708075859455055606570758085104550556065707580852008-09-01版权所有:杨波,武汉科技大学理学院 快速分
8、类分析快速分类分析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)QuickSort(j1+1,n)QuickSort(1,j21-1
9、)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(每次选取的划分元素刚好是当前集合中最小或最大者)2008-09-01版权
10、所有:杨波,武汉科技大学理学院 最坏情况分析最坏情况分析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)。2008-09-01版权所有:杨波,武汉科技大学理学院 最坏
11、情况举例最坏情况举例k01234n-1nn+1ak-n123n-2n-1渐近时间复杂度2008-09-01版权所有:杨波,武汉科技大学理学院 最好情况下最好情况下渐近时间复杂度2008-09-01版权所有:杨波,武汉科技大学理学院 平均情况分析平均情况分析 平均情况是指集合中的元素以任意顺序排列,且任选元素作为划分元素进行划分和分类,在这些所有可能的情况下,算法执行性能的平均值。设调用Partition(m,p)时,所选取划分元素v恰好是am:p-1中的第i小元素(1ip-m)的概率相等。则经过一次划分,所留下的待分类的两个子文件恰好是am:j-1和aj+1:p-1的概率是:1/(p-m),m
12、jp。记平均情况下的元素比较次数是CA(n);则有:其中,n n+1是Partition第一次调用时所需的元素比较次数。n CA(0)=CA(1)=0(1)2008-09-01版权所有:杨波,武汉科技大学理学院 用n-1换(2)中的n(2)-(3)即 反复使用(4)代换CA(n-1),CA(n-2),得到 2008-09-01版权所有:杨波,武汉科技大学理学院 由于 所以 2008-09-01版权所有:杨波,武汉科技大学理学院 n空间分析n 最坏情况下,递归的最大深度为n-1.n 需要栈空间:O(n)使用一个迭代模型可以将栈空间总量减至O(logn)&最坏时间复杂度:最坏时间复杂度:O(n2)
13、&平均时间复杂度:平均时间复杂度:O(nlogn)&辅助空间:辅助空间:O(n)或或O(logn)2008-09-01版权所有:杨波,武汉科技大学理学院 快速分类算法的迭代模型快速分类算法的迭代模型n处理策略:每次在Partition将文件A(p:q)分成两个文件A(p:j-1)和A(j+1,q)后,先对其中较小的子文件进行分类。当小的子文件分类完成后,再对较 大的子文件进行分类。n栈:需要一个栈空间保存目前暂不分类的较大子文件。并在较小子文件分类完成后,从栈中退出最新的较大子文件进行下一步分类。n栈空间需求量:O(logn)n算法终止:当栈空时,整个分类过程结束。2008-09-01版权所有
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 分析 设计 第四 分治 快速 分类
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内