实验 二叉树的生成.docVIP

  • 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)

1亿VIP精品文档

相关文档