比较冒泡排序和快速排序的时间性能

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

南华大学

计算机科学与技术学院实验报告

(2010 ~2011学年度第二学期)

课程名称算法设计与分析

实验名称比较冒泡排序

与快速排序的时间性能

姓名陈亮学号20094100104 专业数媒班级091

地点8-212 教师刘立

1.实验目的

比较冒泡排序与快速排序的时间性能。

2.实验内容

(1)利用随机数产生函数获取数据;

(2)分别用两种不同的排序方法对数据进行排序;

(3)用记时函数对两张排序算法分别进行记时;

(4)用十组以上数据进行实验(10~10000)。

3.实验过程

#include

#include

#include

#define MAX 2000 // 元素个数

#define NUM_MAX 100000 // 随机数的最大值+1

int Partition(int a[],int n,int low,int high)//快速寻找分界点{ int pivotkey,t;

pivotkey=a[low];

while(low

{

while(low=pivotkey)

high--;

t=a[low];

a[low]=a[high];

a[high]=t;

while(low

low++;

t=a[low];

a[low]=a[high];

a[high]=t;

}

return low;

}

void QSort(int a[],int n,int low,int high)//快速排序

{ int pivotloc;

if(low

{

pivotloc=Partition(a,n,low,high);

QSort(a,pivotloc,low,pivotloc-1);

QSort(a,high-pivotloc,pivotloc+1,high);

}

}

void HeapAdjust(int a[],int s,int m)

{

int rc = a[s];

int j=0;

for(j=2*s+1;j<=m;j=j*2+1)

{

if(j

++j;

if(rc > a[j])

break;

a[s] = a[j];

s = j;

}

a[s] = rc;

}

void BubbleSort(int a[],int n)//冒泡排序

{ int t,i,j;

for(j=1;j<=n-1;j++)

for(i=1;i<=n-j;i++)

if(a[i-1]>a[i])

{

t=a[i-1];

a[i-1]=a[i];

a[i]=t;

}

}

int main()

{

srand(time(00));

int i,a[MAX];

clock_t begin, end;

double cost;

for(i=0;i

a[i]=rand()%NUM_MAX;

begin = clock();

BubbleSort(a,MAX);

end = clock();

cost = (double)(end - begin) / CLOCKS_PER_SEC; printf("冒泡排序用时为:%lf 秒\n", cost);

begin = clock();

QSort(a,MAX,0,MAX-1);

end = clock();

cost = (double)(end - begin) / CLOCKS_PER_SEC; printf("快速排序用时为:%lf 秒\n", cost);

return 0;

}

元素个数为10的结果截图

元素个数为200的结果截图

元素个数为1000的结果截图

元素个数为4000的结果截图

元素个数为6000的结果截图

元素个数为8000的结果截图

元素个数为9000的结果截图

元素个数为9500的结果截图

实验数据表

实验数据曲线图

0.10.20.30.40.50.6

实验结论:从以上数据表和数据曲线图均可以看出,在元素个数比较小的情况下,两者的时间性能区分不是很明显。但当元素个数比较大的情况下,快速排序的时间性能明显优于冒泡排序的时间性能。由此可以得出结论:快速排序的时间性能优于冒泡排序的时间性能。 (在实验中遇到了一个问题,就是当元素个数超过9500的时候,只能显示冒泡排序的执行时间,而没有显示快速排序的时间,如截图所示:

现在还是不太理解为什么会出现这种情况)

实验总结:做完这次实验之后,回忆了一下C++的知识,同时也对算法有了新的了解。在算法的过程中,最重要的是问题求解的方法和过程。只要了解的这个,大多数问题的解决法案都会有的。

相关文档
最新文档