- 10
- 0
- 约3.95千字
- 约 8页
- 2017-02-01 发布于北京
- 举报
实 验 报 告
课程名称 计算机软件基础
实验项目 实验三 排序方法比较
系 别_____光电学院_________
专业/班级___________
姓名 ______________
实验日期 _______________________
成 绩 _______________________
指导教师
一、实验目的:
掌握顺序表的常用排序方法,掌握一种计时方法,测试算法的稳定性。
二、实验内容:
1) 分别编写函数实现冒泡排序、快速排序和简单插入排序算法;
2) 2路归并排序(选做)
3) 编制一个应用程序,它将随机产生的N个0~65535之间的整数插入到一个顺
序表中,然后分别用上述排序算法对这个顺序表进行排序;记录并显示各种方法的运行时间;
三、程序清单及结果:(需要标明实现程序对应的实验内容,并给出合理的程序注释及运行结果)
程序清单及注释
// exp3.cpp : 定义控制台应用程序的入口点。
//
#include stdafx.h
#includestdio.h
#includemath.h
#includetime.h
#includestdlib.h
#define SIZE 5000 //每组元素的个数
#define SIZE2 12 //每组元素的个数(测试稳定性)
struct ele //为了检验算法的稳定性,每个元素设为结构体。里面有内容和初始顺序。
{
int data;
int no;
};
typedef struct ele ELE;
void creat(ELE a[],int n);//生成函数
void creat2(ELE a[],int n);//生成函数
void display(ELE a[],int n);//显示函数
void bubble(ELE a[],int n);//冒泡排序函数
void insert(ELE a[],int n);//插入排序函数
void quick(ELE a[],int low,int high);//快速排序函数
int qpass(ELE a[],int low,int high);
void merge(ELE a[],ELE b[],int l, int m,int n);
void mergepass(ELE a[],ELE b[],int L,int n);
void mergesort(ELE a[],ELE b[],int n);//归并排序函数
int _tmain(int argc, _TCHAR* argv[])
{
ELE a[SIZE];
ELE ca[SIZE];//归并排序时使用的缓存结构体数组
int i;
int start[4],end[4];//记录时间
double duration[4];
creat(a,SIZE);
start[0]=clock();
bubble(a,SIZE);
end[0]=clock();
creat(a,SIZE);
start[1]=clock();
insert(a,SIZE);
end[1]=clock();
creat(a,SIZE);
start[2]=clock();
quick(a,0,SIZE-1);
end[2]=clock();
creat(a,SIZE);
start[3]=clock();
mergesort(a,ca,SIZE);
end[3]=clock();
printf(bubble,insert,quick sort,merge sort\n);
for(i=0;i4;i++)
{
duration[i]=(double)(end[i]-start[i]);
printf(持续时间%f\n,duration[i]);
}
creat2(a,SIZE2);
bubble(a,SIZE2);
printf(bubble:\n);
display(a,SIZE2);
creat2(a,SIZE2);
insert(a,SIZE2);
printf(insert:\n);
display(a,SIZE2);
creat2(a,SIZE2);
quick(a,0,SIZE2-1);
printf(quick sort:\n);
display(a,SIZE2);
creat2(a,SIZE2);
mergesort(a
原创力文档

文档评论(0)