编号:09
河北工业大学计算机软件技术基础(VC)课程设计报告
学院 电气与自动化学院 班级 电气081 姓名 杨柳__
学号 080697 成绩 __ ____
一、题目:
排序算法应用一(快速、选择、冒泡法排序)(09)
二、设计思路
1、总体设计 1)分析程序的功能
输入一组无序数列,分别通过快速、选择、冒泡法进行排序,使其按一定规律(由大到小或由
小到大)排列。
2)系统总体结构:
本程序共包括一个头文件,八个函数(包括一个主函数,七个被调函数)。主函数主要完成对各函数的调用及结构的控制 ,七个被调函数中,包括一个输入函数,六个排序函数。
2、各功能模块的设计:
Ⅰ. 主函数模块:主要通过对各函数的调用实现相应的要求。 Ⅱ. 输入函数模块:主要通过循环的方法实现对一维数组的输入。 Ⅲ. 排序函数模块:通过循环方法实现对一维数组有序排列。
3、设计中的主要困难及解决方案
1)由于没有学过快速法排序,在编写程序时遇到困难,总是调试不成功。在图书馆借到关于快速法排序算法的书,认真阅读与思考并应用于程序,终于编好程序。
2)对同一个数组进行三次排序,第二、三次排序前数组已经有序,达不到分别排序的目的。解决方案是将原数组复制到另外两个数组中去,分别排序。
3)由于之前并未涉及过有关多文件函数的编写及处理问题,导致在创新设计开始时丝毫没有头绪。主要通过对实验教程P15内容的仔细阅读与思考而学会并应用于程序的编写当中去。
4、我所设计的程序最终完成的功能
1)所编程序可以完成对无序数组的升序、降序排序并分别统计排序次序。 2)准备的测试数据如下:
第1页/共9 页
编号:09
49 38 65 97 76 13 27 运行结果:
三、程序清单
本程序包含main.cpp、input.cpp、bubblesort.cpp、selectionsort.cpp、quicksort.cpp、bubble.cpp、selection.cpp、quick.cpp、keshe.h九个文件。
1、main.cpp文件清单
#include\void main() {
int sequence[N],n3=0,a[N],b[N],x,c[N],d[N],e[N]; cout<<\请输入\个整数:\input(sequence);//输入无序数组 cout<<\输入的无序数列为:\for(int i=0;i cout< 第2页/共9 页 cout< 编号:09 for(i=0;i a[i]=b[i]=c[i]=d[i]=e[i]=sequence[i];//将输入的数组复制给另外两个数组,使三次分别对原输入的数组排序 } cout<<\降序排列为:\\n\ bubblesort(sequence);//通过冒泡法进行降序排序 cout< selectionsort(a);//通过选择法进行降序排序 cout< quicksort(b,0,N-1,&n3);//通过快速法进行降序排序 cout<<\使用快速法降序排序后的数列为:\for(i=0;i cout< cout< selection(d);//通过选择法进行升序排序 cout< quick(e,0,N-1,&n3);//通过快速法进行升序排序 cout<<\使用快速法升序排序后的数列为:\for(i=0;i cout< cout< 2、input.cpp文件清单 #include\void input(int s[]) { for(int i=0;i cin>>s[i]; 第3页/共9 页