09排序算法应用一_第1页
09排序算法应用一_第2页
09排序算法应用一_第3页
免费预览已结束,剩余6页可下载查看

下载本文档

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

文档简介

1、河北工业大学计算机软件技术基础(VC课程设计报告学院电气与自动化学院班级 电气081 姓名 杨柳学号080697 成绩一、题目排序算法应用一(快速、选择、冒泡法排序)(09)二、设计思路1、总体设计1)分析程序的功能输入一组无序数列,分别通过快速、选择、冒泡法进行排序,使其按一定规律(由大到小或由 小到大)排列。2)系统总体结构:本程序共包括一个头文件,八个函数(包括一个主函数,七个被调函数)。主函数主要完成对各函数的调用及结构的控制 ,七个被调函数中,包括一个输入函数,六个排序函数。2、各功能模块的设计:I.主函数模块:主要通过对各函数的调用实现相应的要求。n .输入函数模块:主要通过循环的

2、方法实现对一维数组的输入。川.排序函数模块:通过循环方法实现对一维数组有序排列。3、设计中的主要困难及解决方案1)由于没有学过快速法排序,在编写程序时遇到困难,总是调试不成功。在图书馆借到关于快 速法排序算法的书,认真阅读与思考并应用于程序,终于编好程序。2)对同一个数组进行三次排序,第二、三次排序前数组已经有序,达不到分别排序的目的。解 决方案是将原数组复制到另外两个数组中去,分别排序。3) 由于之前并未涉及过有关多文件函数的编写及处理问题,导致在创新设计开始时丝毫没有头 绪。主要通过对实验教程 P15内容的仔细阅读与思考而学会并应用于程序的编写当中去。4、我所设计的程序最终完成的功能1 )

3、所编程序可以完成对无序数组的升序、降序排序并分别统计排序次序。2 )准备的测试数据如下:7676493627使用选择法降序拆序后的数列为:9?627279749怦择法的降序擀序次序为:3 底用快速法降序排序后的数列为:9?决速法的降序排序次序为:5SE第曹證宦蔣序排序后的数冒泡法的降序排序次序为汚升序排列为;使用曽泡哇并序排序后的数列为:13 冒泡法的升序排序次序为也余用选择法升序排序后的数列为:13g择法的升序排序次序为二&使用决速法升序排序后的数列为:灯快速法的升序排序次序为二賞49 38 65 97 76 13 27运行结果12<J三、程序清单本程序包含 main, cpp

4、、in put.cpp、bubblesort.cpp、select ion sort.cpp、quicksort.cpp、bubble.cpp、 selection.cpp、quick.cpp、keshe.h 九个文件。1、main.cpp文件清单#i nclude"keshe.h"void mai n()int seque nceN, n3=0,aN,bN,x,cN,dN,eN;cout<<"请输入"<<N<<"个整数:"<<endl;in put(seque nce);输入无序数组c

5、out<<"输入的无序数列为:";for(int i=0;i<N;i+)cout<<sequencei<<'t: /输出无序数组,便于同排序后比较cout<<e ndl;for(i=0;i<N;i+)ai=bi=ci=di=ei=seque ncei;/将输入的数组复制给另外两个数组,使三次分别对原输入的数组排序cout<<"降序排列为:n"bubblesort(seque nce);通过冒泡法进行降序排序cout<<e ndl;selectio nsort(a)

6、; 通过选择法进行降序排序cout<<e ndl;quicksort(b,0,N-1,&n3); 通过快速法进行降序排序cout<<"使用快速法降序排序后的数列为:";for(i=0;i<N;i+)cout<<bi<<'t:cout<<endl<<"快速法的降序排序次序为:"<<n3<<endl; 对快速法的降序排序结果进行输出cout<<"n"<<"升序排列为:n"bubb

7、le(c); /通过冒泡法进行升序排序cout<<e ndl;selectio n(d); /通过选择法进行升序排序cout<<e ndl;quick(e,0,N-1,&n3); 通过快速法进行升序排序cout<<"使用快速法升序排序后的数列为:";for(i=0;i<N;i+)cout<<ei<<'t'cout<<endl<<"快速法的升序排序次序为:"<<n3<<endl; 对快速法的升序排序结果进行输出2、inp

8、ut.cpp文件清单#i nclude"keshe.h"void in put(i nt s)for(int i=0;i<N;i+)cin> >si;3、 bubblesort.cpp文件清单#i nclude"keshe.h"void bubblesort(i nt s)int i,j,t, n1=0;for(i=0;i<N-1;i+)for(j=0;j<N-1-i;j+)if(sj<sj+1)t=sj;sj=sj+1;sj+1=t;n1+;统计排序次序cout<<"使用冒泡法降序排序后的数列为

9、for(i=0;i<N;i+)cout<<si<<'t::"< <n 1<<e ndl;cout<<endl<<"冒泡法的降序排序次序为4、 selectionsort.cpp文件清单#i nclude"keshe.h"void select ion sort(i nt s)int i,j,k,t ,n 2=0;for(i=0;i<N;i+)k=i;for(j=i+1;j<N;j+)if(sj>sk)k=j;if(k!=i)t=si;si=sk;sk=

10、t;n2+;统计排序次序cout<<"使用选择法降序排序后的数列为for(i=0;i<N;i+)cout<<si<<'t::"<<n 2<<e ndl;cout<<endl<<"选择法的降序排序次序为5、quicksort.cpp文件清单#i nclude"keshe.h"void quicksort(i nt s,i nt low,i nt high,i nt *p)int i=low,j=high,t,x;t=slow;while(i<j

11、)while(i<j&&sj<=t)j-;if(i<j)x=sj;sj=t;si=x;(*p)+; 统计排序次序while(i<j&&si>t)i+;if(i<j)x=si;si=t;sj=x;(*p)+; 统计排序次序if(low<i-1)quicksort(s,low,i-1,p);if(j+1<high)quicksort(s,j+1,high,p);6、bubble.cpp文件清单#i nclude"keshe.h"void bubble(i nt s)int i,j,t, n1=0;f

12、or(i=0;i<N-1;i+)for(j=0;j<N-1-i;j+) if(sj>sj+1) t=sj;sj=sj+1;sj+1=t;n 1+; /统计排序次序cout<<"使用冒泡法升序排序后的数列为:";for(i=0;i<N;i+)cout<<si<<'t:cout<<endl<<"冒泡法的升序排序次序为:"<<n 1<<endl;7、 selection.cpp文件清单#i nclude"keshe.h"voi

13、d select ion (i nt s)int i,j,k,t ,n 2=0;for(i=0;i<N;i+)k=i;for(j=i+1;j<N;j+)if(sj<sk)k=j;if(k!=i)t=si;si=sk;sk=t;n2+;统计排序次序cout<<"使用选择法升序排序后的数列为:"for(i=0;i<N;i+)cout<<si<<'t'cout<<endl<<"选择法的升序排序次序为:"<<n2<<endl;8、quick

14、.cpp文件清单#i nclude"keshe.h"void quick(i nt s,i nt low,i nt high,i nt *p) int i=low,j=high,t,x;t=slow;while(i<j)while(i<j&&sj>=t)j-;if(i<j)x=sj;sj=t;si=x;(*p)+; 统计排序次序while(i<j&&si<t)i+;if(i<j)x=si;si=t;sj=x;(*p)+; 统计排序次序if(low<i-1)quick(s,low,i-1,p);i

15、f(j+1<high)quick(s,j+1,high,p);9、keshe.h文件清单#in clude<iostream.h>const int N=7;void in put(i nt s);void bubblesort(i nt s);void select ion sort(i nt s);void quicksort(i nt s,i nt,i nt, in t*p);void bubble(i nt s);void select ion (i nt s);void quick(i nt s,i nt, in t,i nt*p);四、对该设计题目有何更完善的方案1、对自己完成程序进行自我评价。对于这个程序,我很满意,毕竟这是我一周以来辛勤劳动的成果,这一周我往返于机房,图书 馆,宿舍,不断地完善自己的课题,虽然过程中有过困难,但是更多的是完成后的欣悦。对于一个 初学者来说,这个程序难免有不尽如人意的地方,不过我会再接再厉,争取更大的进步。2、对课题提出更完善的方案1 )与用户交流的程序较少,应加强此方面的设计。2)由于实际生活中的问题更加复杂,所以将此程序完善为可以录入结构体,会更加实用。五、收获及心得体会1、收获通过本次课程设计,我对循环的使用以及对函数的调用掌握得更加扎实,对

温馨提示

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

评论

0/150

提交评论