排序问题的二分排序和归并排序.docx
《排序问题的二分排序和归并排序.docx》由会员分享,可在线阅读,更多相关《排序问题的二分排序和归并排序.docx(6页珍藏版)》请在三一办公上搜索。
1、1.实验目的(结出本次实验所涉及并要求掌握的知识点)快速排序和归并排序两个算法学习分而治之策略并分析递归函数的时间复杂度2.实验内容(结出实验内容具体描述)快速排序和归并排序都是使用分而治之策略开发的求解排序问题的算法(1)分别实现这两个算法(2)从分而治之策略的几个步骤分析他们的区别(3)将主要步骤的时间复杂度以注释形式插入在程序代码中。3 .算法描述及实验步骤(用适当的形式表达算法设计思想与算法实现步骤)1.快速排序void quickSort(int left,int right,int a) / T(n)=2T(n/2)+O(n) if(left=right)return;elsein
2、t i=left;int j=right;int temp=aleft;int flag=1;while(j!=i)while(flag & j!=i) if(ajtemp)flag=1;aj=ai; elsei+;ai=temp;quickSort(left,i-1,a);quickSort(i+1,right,a);/ divide (以i为左右边界)/ T(n/2)/ T(n/2)2.归并排序void merge(int arr,int left,int mid,int right) / O(n)int m=mid-left;int end=right-left;int copyend+
3、1;int i,j,k;for(i=0,j=left;i=end;i+,j+) / O(n)copyi=arrj;i=0;j=m+1;k=left;while(i=m & j=end)/O(n)if(copyim)/O(n)for(;j=end;j+,k+)arrk=copyj;elsefor(;i=m;i+,k+)arrk=copyi;_void mergeSort(int arr,int left,int right) / T(n)=2T(n/2)+O(n)if(left=right)/ basic casereturn;else/ recursive caseint mid=(left+
4、right)/2; / divide mergeSort(arr,left,mid); / T(n/2) mergeSort(arr,mid+1,right); / T(n/2) merge(arr,left,mid,right); / combine: O(n) 4.调试过程及运行结果(详细记录在调试过程中出现的问题及解决方法。记录实验执行 的结果)右边是归并排序左边是快速排序请输入数组古小n:8请输入数组大小n:8请输入数组元素:请输入数据:9 4 1 -4011 -30L909 4 1 01 -30190快速排序后的数组:归并排序后的数组,-30 -4 014 9 11L90-30 -4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 排序 问题 二分 归并

链接地址:https://www.31ppt.com/p-5303473.html