排序效率比较
Company Document number:WUUT-WUUY-WBBGB-BWYTT-1982GT
《排序效率比较》专业:
班级:
姓名:
指导教师:
二OO九年八月二十七日
目录
课程设计的内容如下:
1.课程设计目的
用C++编一程序对排序方法进行比较,用选定的排序方法进行排序,输出每种方法数据比较或交换的次数,最后输出所花费的时间。
2.课程设计题目描述和要求
[问题描述]对排序法进行比较,比较其运行效率。
[基本要求]至少对三种排序方法进行比较,比较方法是生成一组数据(≥400)。
(1)用三种方法对四百个数字进行排序;
(2)用time函数分别测试三种排序方法就同一组数据排序所消耗的时间;
(3)分别测试三种排序方法就同一组数据排序所交换的次数;
3.课程设计报告内容
结构图
(1)功能结构图
(2)数据流程图
主要函数功能描述
(1)Time()
{
long beginTime =clock();程设计总结
通过一年对数据结构程序设计的学习,我已经能够进行简单的程序设计,这次课程设计对自己所学知识起到了检测和提高的作用。
虽然已经完成,但是还有很多不足之处,程序的设计中遇到不少问题,例如如何进行排序算法的边写,Time函数的应用等等,通过和同学的讨论与交流,解决了不少问题。
程序的调试过程中也有不少问题,例如标点、菜单的界面设计等。
课程设计完成后,感觉上最大的收获就是在设计之前要有一个清晰的思路和完整的设计提纲,对各功能函数的作用做详细考虑。
细心在这次课程设计中起到很关键的作用,一个标点、一个字母、一个符号都可能导致程序的不能运行,因此要有耐心认真完成。
当然知识是不可缺少的,只有对这学期所学得知识能够真正掌握并能加以运用,才能顺利完成这次的课程设计。
如果把磁盘文件学的精通一点,就可以用磁盘文件读取数据。
参考书目:
谭浩强,《C++程序设计》,北京,清华大学出版社,2006年.
源代码:
#include<iostream> //头文件
#include<>
using namespace std;
int t1,t2,t3;
void T1 (int *a)
{
long beginTime =clock();//获得开始时间,单位为毫秒
int i,j,k,t,n1=0;
for(i=0;i<399;i++){
k=i;
for(j=i+1;j<400;j++)
if(a[j]<a[k])
{
k=j;
t=a[i];
a[i]=a[k];
a[k]=t;
n1++;
} //选择排序
}
for(i=0;i<400;i++)
cout<<a[i]<<'\t';
long endTime=clock();//获得结束时间
cout<<"beginTime:"<<beginTime<<endl;
cout<<"endTime:"<<endTime<<endl;
cout<<"endTime-beginTime:"<<endTime-beginTime<<endl;
cout<<"n1="<<n1<<endl; //n1为选择排序交换的次数 t1=endTime-beginTime;
cout<<"t1="<<t1<<endl; //t1为选择排序所用时间
}
void T2 (int *a)
{
long beginTime =clock(); //获得开始时间,单位为毫秒 int i,j,k,t,n2=0;
for(i=0;i<399;i++){
k=i;
for(j=i+1;j<400;j++)
if(a[j]<a[k])
k=j;
t=a[i];
a[i]=a[k];
a[k]=t;
{
n2++;
}
} //起泡排序
for(i=0;i<400;i++)
cout<<a[i]<<'\t';
long endTime=clock(); //获得结束时间
cout<<"beginTime:"<<beginTime<<endl;
cout<<"endTime:"<<endTime<<endl;
cout<<"endTime-beginTime:"<<endTime-beginTime<<endl;
cout<<"n2="<<n2<<endl; //n2为起泡排序交换的次数 t2=endTime-beginTime;
cout<<"t2="<<t2<<endl; //t2为起泡排序所用时间
}
void T3(int *a){
long beginTime =clock(); //获得开始时间,单位为毫秒
int i,j,n=400,n3=0,b;
for(i=2;i<=400;i++){
b=a[i];
for(j=i-1;b<a[j];j--)
a[j+1]=a[j];
a[j+1]=b;
{
n3++;
}
//插入排序
}
for(i=1;i<=n;i++)cout<<a[i]<<'\t';
cout<<endl;
long endTime=clock(); //获得结束时间
cout<<"beginTime:"<<beginTime<<endl;
cout<<"endTime:"<<endTime<<endl;
cout<<"endTime-beginTime:"<<endTime-beginTime<<endl;
cout<<"n3="<<n3<<endl; //n3为插入排序交换的次数 t3=endTime-beginTime;
cout<<"t3="<<t3<<endl; //t2为插入排序所用时间
}
void main()
{
int a[401];
for(int i=0;i<401;i++)
a[i]=(401-i);
T1(a); //分别调用函数
T2(a);
T3(a);
}。