文档详情

比较冒泡排序与快速排序的性能_精品.doc

发布:2018-04-04约6.25千字共18页下载文档
文本预览下载声明
南华大学 计算机科学与技术学院 实 验 报 告 (2011年度 第 1 学期 ) 课程名称 算法设计与分析 实验名称 比较冒泡排序与快速排序的性能 姓名 彭赐缘 学号 20094360131 专业 网络工程 班级 091 地点 8教实验室 教师 刘立 1.掌握冒泡排序方法,快速排序方法,并掌握用高级语言实现排序算法的方法; 2.深刻理解冒泡排序和快速排序的定义和特点,并能加以灵活应用; 3.两种方法的排序过程及其依据的原则,并掌握各种排序方法的时间复杂性和稳定性的分析方法。 4.通过对冒泡法与快速算法的时间,效率,性能分析和比较得出优劣,由此了解到在不同条件下冒泡法与快速排序算法的选择 (软件硬件及条件) 硬件:台式组装电脑, 软件:windows XP,Visual C++ 6.0 (1)算法流程图 冒泡排序: 快速排序: (2)程序代码 #includeiostream.h #includestdio.h #includestdlib.h #includetime.h long Bubblesort(long R[],long n) { int flag=1; long BC=0; for(long i=1;in;i++) { flag=0; for(long j=n-1;j=i;j--) { if(R[j]R[j-1]) { long t=R[j]; R[j]=R[j-1]; R[j-1]=t; flag=1; BC++; } } } return BC; } long Bubblesortcompare(long R[],long n) { int flag=1; long BC=0; for(long i=1;in;i++) { flag=0; for(long j=n-1;j=i;j--) { if(R[j]R[j-1]) { long t=R[j]; R[j]=R[j-1]; R[j-1]=t; flag=1; BC++; } if(R[j]=R[j-1]) BC++; } } return BC; } long quicksort(long R[],long left,long right) { static long QC=0; long i=left,j=right; long temp=R[i]; while(ij) { while((R[j]temp)(ji)) { QC++; j=j-1; } if(ji) { R[i]=R[j]; i=i+1; QC++; } while((R[i]=temp)(ji)) { QC++; i=i+1; } if(ij) { R[j]=R[i]; j=j-1; QC++; } } //二次划分得到基准值的正确位置 R[i]=temp; if(lefti-1) quicksort(R,left,i-1); //递归调用左子区间 if(i+1right) quicksort(R,i+1,right); //递归调用右子区间 return QC; } long quicksortcompare(long R[],long left,long right) { static long QC=0; long i=left,j=right; long temp=R[i]; while(ij) { while((R[j]temp)(ji)) { QC++; j=j-1; } if(ji) { R[i]=R[j]; i=i+1; } while((R[i]=temp)(ji)) { QC++; i=i+1; } if(ij) { R[j]=R[i]; j=j-1; } } //二
显示全部
相似文档