比较冒泡排序与快速排序的性能_精品.doc
文本预览下载声明
南华大学
计算机科学与技术学院
实 验 报 告
(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;
}
}
//二
显示全部