数据结构课程设计_排序算法比较[完整版]61601 下载本文

快速排序 选择排序 堆排序 基数排序 O(n2) O(n2) O(n*log2n) O(n*log2n) O(n*log2n) O(n2) O(n*log2n) O(n2) 不稳定 稳定 不稳定 稳定 10000个数据的时间比较: 算法名称 直接插入排序 折半插入排序 起泡排序 快速排序 选择排序 堆排序 基数排序 用时 0.25 0.219 0.704 0.016 0.39 0.0001 0.016 六、测试用例

1、首先选择需要排序的数字个数,比如输入5000。

. . .

2、系统显示出随机产生的随机数。

用户选择排序方式,比如选择1.直接插入排序

3、系统将随机数排序后整齐的显示出来。

4、用户可以选择继续排序或者退出系统。

七、程序源代码

/**********************************************************************************************

第六题:排序算法比较

设计要求:利用随机函数产生N个随机整数(N = 500,1000,1500,2000,2500,…,30000),

. . .

利用直接插入排序、折半插入排序,起泡排序、快速排序、||选择排序、堆排序,基数排序七种排序方法

(可添加其它排序方法)进行排序(结果为由小到大的顺序),并统计每一种排序所耗费的时间(统计

为图表坐标形式)。

************************************************************************************************/ #include \#include \

#include \计时

#define ERROR 0 #define OK 1

#define OVERFLOW -2

#define MAXSIZE //用户自己规定排序的数字的长度

typedef int Status;

typedef struct {

int *r; // r[0]闲置

int length; //顺序表的总长度 }Sqlist;

//构造一个空线性表

Status InitSqlist(Sqlist &L) { L.r=(int *)malloc(MAXSIZE*sizeof(int)); //分配存储空间 if(!L.r) { printf(\存储分配失败!\ exit(0); } //存储分配失败 L.length=0;//初始长度为0 return OK; }

//输入随机数并显示在界面上

Status ScanfSqlist(int &N,Sqlist &L) { int i;