算法分析与设计第四章2分治法归并分类.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)
《算法分析与设计第四章2分治法归并分类.ppt》由会员分享,可在线阅读,更多相关《算法分析与设计第四章2分治法归并分类.ppt(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章 分治法分治法2008-09-014.4 4.4 归并分类归并分类n分类问题排序q对一个给定含有n个元素(又称为关键字)的集合,按一定次序进行分类(如非降次序)称称n元排序元排序。q常见的排序方法:n冒泡排序n插入排序n归并排序n快速排序2008-09-01插入分类插入分类n基本思想for(j=2;j=n;j+)将aj放到已分类集合a1:j-1的正确位置上 2008-09-01public static void InsertionSort(int a,int n)/将a1:n中的元素按非降次序分类,n1 int i,j;/循环计数变量 int item;/欲插入数据变量 for(
2、j=2;j=1&item6,故9置于6之后i0123456ai-693415插入“3”:36,故6,9网后移,3置于原6的位置i0123456ai-369415插入“4”:346,故6,9往后移,4置于原6的位置i0123456ai-346915插入“1”:13,故3,4,6,9均往后移,1置于原3的位置i0123456ai-134695插入“5”:456,故6,9往后移,5置于原6的位置i0123456ai-1345692008-09-01分治策略设计分治策略设计n算法的基本思想:q将分成两个集合 和q对每个集合单独分类 q将已分类的两个序列归并成一个含n个元素的分好类的序列 q这样一个分类
3、过程称为归并分类2008-09-01归并分类算法归并分类算法void MergeSort(int low,int high)/alow:high是一个全程数组,low和high分别指示当前待分类区间的最小下标和最大下标,含有high-low+10个待分类的元素 int mid;if(lowhigh)/当含有2个及2个以上的元素时,作划分与递归处理 mid=(low+high)/2;/计算中分点 MergeSort(low,mid);/在第一个子集合上分类(递归)MergeSort(mid+1,high);/在第二个子集合上分类(递归)Merge(low,mid,high);/归并已分类的两子集
4、合 2008-09-01使用辅助数组归并两个已分类的集合的算法使用辅助数组归并两个已分类的集合的算法public void Merge(int low,int mid,int high)int n,h,i,j,k;int b;n=;b=new intn;h=low;i=low;j=mid+1;while(h=mid)&(j=high)if(ahmid)for(k=j;k=high;k+)bi=ak;i+;else for(k=h;k=mid;k+)bi=ak;i+;for(k=low;k1,c是常数化简:若n=2k,则有,T(n)=2(2T(n/4)+cn/2)+cn =4T(n/4)+2cn
5、=4(2T(n/8)+cn/4)+2cn =2kT(1)+kcn =an+cnlogn /k=logn所以得:T(n)=O(nlogn)递归调用一直进行到子区间仅含一个元素时为止复杂度分析复杂度分析T(n)=O(nlogn)渐进意义下的最优算法2008-09-01归并分类示例归并分类示例设a=(310,285,179,652,351,423,861,254,450,520)1)划分过程划分过程310,285,179,652,351,423,861,254,450,520310,285,179,652,351423,861,254,450,520310,285,179652,351310,285
6、179310285652351423,861,254450,520423,8612544238614505202008-09-012)归并过程归并过程首先进入左分枝的划分与归并。第一次归并前的划分状态是:(310|285|179|652,351|423,861,254,450,520)第一次归并:(285,310|179|652,351|423,861,254,450,520)第二次归并:(179,285,310|652,351|423,861,254,450,520)第三次归并:(179,285,310|351,652|423,861,254,450,520)第四次归并:(179,285,3
7、10,351,652|423,861,254,450,520)进入右分枝的划分与归并过程(略)2008-09-013)用树结构描述归并分类过程)用树结构描述归并分类过程1,101,56,101,34,56,89,104,43,31,12,21,25,56,78,89,910,106,67,7MergeSort(1,10)的调用1,1,26,6,71,2,34,4,56,7,89,9,101,3,56,8,101,5,10Merge的调用2008-09-01310,285,179,652,351,423,861,254,450,520310,285,179,652,351423,861,254,
8、450,520310,285,179652,351310,285179310285652351423,861,254450,520423,861254423861450520285,310179,285,310351,652179,285,310,351,652423,861254,423,861450,520254,423,450,520,861179,254,285,310,351,423,450,520,652,8612008-09-01归并分类的非递归算法归并分类的非递归算法n设计思想2008-09-012008-09-01public static void MergeSort(in
9、t n,int DataLength)/n为待合并数据个数为待合并数据个数 int i,t;/循环计数变量循环计数变量 i=1;/还有两段长度为还有两段长度为DataLength的的list可合并可合并 while(i=(n-2*DataLength+1)Merge(i,i+DataLength-1,i+2*DataLength-1);i=i+2*DataLength;if(i+DataLengthn)/合并两段合并两段list,一段长度为,一段长度为DataLength,另一段长度不足,另一段长度不足DataLength Merge(i,i+DataLength-1,n);else /将剩下
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 分析 设计 第四 分治 归并 分类
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内