快速排序c语言实验报告,冒泡排序和快速排序实验报告.doc

44cb7578e1df5412b94317daaa3307ba.gif冒泡排序和快速排序实验报告.doc

下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。

2.下载的文档,不会出现我们的网址水印。

3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。

文档包含非法信息?点此举报后获取现金奖励!

下载文档到电脑,查找使用更方便

12

积分

还剩页未读,继续阅读

关 键 词:冒泡

排序

快速

实验

报告

资源描述:

实验报告

实验名称 实验三 冒泡排序和快速排序

班 级

学 号

姓 名

成 绩

实验概述:

【实验目的及要求】

实验目的:通过编程程序达到熟悉并掌握教材中所介绍的几种排序方法。

实验要求:

1)随机产生20位整数

2)输入序列,编写程序,按下列排序方法将序列从小到大排序并输出。

1. 冒泡排序

2. 快速排序

3)纪录每种方法比较次数和移动次数

4)随机产生2000位整数,重做实验2),比较两种算法需要的计算时间。

【实验原理】

1. 随机产生20位整数

随机数的产生见实验一。创立一个数组,将产生的随机数存入数组。

2. 冒泡排序

对于带排序的数组L(n),使用冒泡排序的算法如下:

输入:数组L(n)(无序)

输出:数组L(n)(有序)

f=1

While (f>0) Do

{k=f+1; f=0;

For j=n To k Step -1

{ If L(j-1)>L(j) Then

{ T=L(j); L(j)=L(j+1); L(j+1)=T; f=j; }

}

}

3. 快速排序

对于带排序的数组P(n),使用快速排序的算法如下:

输入:待排序的子表P(m:n)。

输出:有序子表P(m:n)。

PROCEDURE QKSORT1(P,m,n)

IF (n>m) THEN [子表不空]

{

SPLIT(P,m,n,i); [分割]

QKSORT1(P,m,i-1);[对前面子表进行快速排序]

QKSORT1(p,i+1,n);[对后面子表进行快速排序]

}

RETURN

4. 纪录每种方法比较次数和移动次数

设变量X,Y,记录上面算法比较和移动的次数。

5. 关于计算时间的比较

使用GetTickCount来记录算法使用时间,具体算法如下:

DWORD start_time;

DWORD end_time;

DWORD run_time;

start_time = GetTickCount();

算法();

end_time = GetTickCount();

run_time = end_time - start_time;

【实验环境】(使用的软硬件)

1.硬件:笔记本。

2.软件:Window XP、Turbo C 3.0

实验内容:

【实验方案设计】

冒泡法排序的程序如下:

#include#include#define N 20

int comp=0,move=0;

main()

{long m=65536;long y=0;int x[N],i=0,j,temp;

printf("\nmao pao fa pai xu:\n");

printf("zui chu chan sheng de sui ji shu:\n");

for(;ij;i--)

{comp++;

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

{temp=x[i];x[i]=x[i-1];x[i-1]=temp;move++;}}

printf("\npai hao hou de sui ji shu:\n");

for(i=0;i#include#include#define N 20

int comp=0,move=0;

main()

{

void kuaisu(int x[],int left,int right);

long m=65536;

long y=0;

int x[N],i=0,j,temp,left=0,right=N-1;

printf("\nkuai su fa pai xu:\n");

printf("zui chu chan sheng de sui ji shu ru xia:\n");

for(;iright)

{

return;

}

while(i!=j)

{

comp++;

while(x[j]>=temp && j>i)

{

j--;

}

if(j>i)

{

x[i++]=x[j];

move++;

}

while(x[i]<=temp && j>i)

{

i++;

}

if(j>i)

{

x[j--]=x[i];

}

}

x[i]=temp;

kuaisu(x,left,i-1);

kuaisu(x,i+1,right);

}

【实验过程】(实验步骤、数据、分析)

实验步骤:

1)随机产生20位整数

2)输入序列,编写程序,按下列排序方法将序列从小到大排序并输出。

1. 冒泡排序

2. 快速排序

3)纪录每种方法比较次数和移动次数

实验结果分析:

根据冒泡法和快速法输出地移动次数和比较次数可以看出,快速法的移动次数和比较次数要比冒泡法少许多。因此,快速法是一种比冒泡法更好的排序法。

【结论】(结果)

冒泡法排序的结果的截图:

快速法排序的结果的截图:

【小结】

由于大一下学期学习C语言时,冒泡法和快速法都是重点内容,这次实验进行的比较顺利,没有遇到太多困难。只是刚开始不知道怎样输出比较次数和移动次数,后来定义了两个全程变量,解决了这个问题。另外,虽然实验说明上有怎样输出时间的语句,但是尝试了许多次还是没有成功。先是提示变量类型错误,然后提示没有GetTickCount()函数。最后只好没有输出时间,也没有比较两种方法的运行时间

指导教师评语及成绩:

成绩: 指导教师签名:

批阅日期:

展开阅读全文

温馨提示:

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。

2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。

3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。

4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。

5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。

6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。

7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

bb6249c6567dd4384e6ab3556cfc22ed.gif 

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

关于本文

本文标题:冒泡排序和快速排序实验报告.doc

链接地址:https://www.renrendoc.com/p-44487708.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值