文档介绍:-
. z.
******大学
"数据构造"课程设计报告
目 录
排序算法比拟
需求分析
程序的主要功能
程序运行平台
数据构造
算法及时间复杂度
测试用例
程序用户选择排序方式,
系统将随机数排序后整齐的显示出来。
用户可以选择继续排序或者退出系统。
七、程序源代码
-
. z.
/**********************************************************************************************
第六题:排序算法比拟
设计要求:利用随机函数产生N个随机整数〔N = 500,1000,1500,2000,2500,…,30000〕,
利用直接插入排序、折半插入排序,起泡排序、快速排序、||选择排序、堆排序,基数排序七种排序方法
〔可添加其它排序方法〕进展排序〔结果为由小到大的顺序〕,并统计每一种排序所消耗的时间〔统计
为图表坐标形式〕。
************************************************************************************************/
*include ""
*include ""
*include ""//计时
*define ERROR 0
*define OK 1
*define OVERFLOW -2
*define MA*SIZE 100000 //用户自己规定排序的数字的长度
typedef int Status;
typedef struct
{
int *r; // r[0]闲置
int length; //顺序表的总长度
}Sqlist;
//构造一个空线性表
Status InitSqlist(Sqlist &L)
{
=(int *)malloc(MA*SIZE*sizeof(int)); //分配存储空间
if(!)
{
printf("存储分配失败!");
e*it(0);
} //存储分配失败
=0;//初始长度为0
return OK;
}
//输入随机数并显示在界面上
Status ScanfSqlist(int &N,Sqlist &L)
{
int i;
printf("请输入要排序的元素个数N: ");
scanf("%d",&N);
-
. z.
for(i=1;i<=N;i++)
[i]=rand(); //随机产生样本整数
printf("\n\n");
printf(" 随机产生了%d个随机数,它们是:\n",N);
for(i=1;i<=N;i++)
{
printf("% ",[i]);
}
printf("\n");
=N; //存储线性表的长度
return OK;
}
//输出排序之后的数据
Status PrintfSqlist(int N,Sqlist L)
{
int i;
printf("数据个数:");//输出数据个数
printf("%d\n",);
printf("排序后的数据:(从左向右依次增大)\n");//输出数据
for(i=1;i<=N;i++)
printf("% ",[i]);
printf("\n");
return OK;
}
//***************************************************************
// 直接插入排序
//***************************************************************
Status InsertSort(Sqlist &L) //
{
int i,j;
if(==0)
{
pr