冒泡排序和快速排序实验报告.doc_第1页
冒泡排序和快速排序实验报告.doc_第2页
冒泡排序和快速排序实验报告.doc_第3页
冒泡排序和快速排序实验报告.doc_第4页
冒泡排序和快速排序实验报告.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验报告实验名称 实验三 冒泡排序和快速排序 班 级 学 号 姓 名 成 绩 实验概述: 【实验目的及要求】实验目的:通过编程程序达到熟悉并掌握教材中所介绍的几种排序方法。实验要求:1)随机产生20位整数2)输入序列,编写程序,按下列排序方法将序列从小到大排序并输出。1. 冒泡排序2. 快速排序3)纪录每种方法比较次数和移动次数4)随机产生2000位整数,重做实验2),比较两种算法需要的计算时间。【实验原理】1 随机产生20位整数 随机数的产生见实验一。创立一个数组,将产生的随机数存入数组。2 冒泡排序对于带排序的数组L(n),使用冒泡排序的算法如下:输入:数组L(n)(无序)输出:数组L(n)(有序)f=1While (f0) Dok=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 (nm) THEN 子表不空 SPLIT(P,m,n,i); 分割 QKSORT1(P,m,i1);对前面子表进行快速排序 QKSORT1(p,i1,n);对后面子表进行快速排序 RETURN4 纪录每种方法比较次数和移动次数设变量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 20int comp=0,move=0;main()long m=65536;long y=0;int xN,i=0,j,temp;printf(nmao pao fa pai xu:n);printf(zui chu chan sheng de sui ji shu:n); for(;iN;i+) y=(2053*y+13849)%m;xi=(int)(1000*y/m); printf(%dt,xi); for(j=0;jj;i-) comp+; if(xi-1xi)temp=xi;xi=xi-1;xi-1=temp;move+;printf(npai hao hou de sui ji shu:n);for(i=0;iN;i+)printf(%dt,xi);printf(nmove=%d,comp=%d,move,comp); 快速法的程序如下:#include#include#include#define N 20int comp=0,move=0;main()void kuaisu(int x,int left,int right);long m=65536;long y=0;int xN,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(;iN;i+) y=(2053*y+13849)%m;xi=(int)(1000*y/m); printf(%dt,xi); printf(n);kuaisu(x,left,right);printf(yong kuai su fa pai hao hou de shu:n);for(i=0;iright)return; while(i!=j) comp+; while(xj=temp & ji) j-; if(ji) xi+=xj; move+; while(xii) i+; if(ji) xj-=xi; xi=temp;kuaisu(x,left,i-1);kuaisu(x,i+1,right);【实验过程】(实验步骤、数据、分析)实验步骤:1)随机产生20位整数2)输入序列,编写程序,按下列排序方法将序列从小到大排序并输出。1. 冒泡排序2. 快速排序3)纪录每种方法比较次数和移动次数实验结果分析:根据冒泡法和快速法输出地移动次数和比较次数可以看出,快速法的移动次数和比较次数要比冒泡法少许多。因此,快速法是一种比冒泡法更好的排序法。【结论】(结果)冒泡法排序的结果的截图:快速法排序的结果的截图:【小结】由于大一下学期学习C语言时,冒泡法和快速法都是重点内容,这次实验进行的比较顺利,没有遇到太多困难。只是刚开始不知道怎样输出比较次数和移动次数,后来定义了两个全程变量,解决了这个问题。另外,虽然实验说明上

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论