数据结构课程设计排序算法比较 联系客服

发布时间 : 星期四 文章数据结构课程设计排序算法比较更新完毕开始阅读89d04980ba4cf7ec4afe04a1b0717fd5370cb279

数据结构课程设计——排序算法比较

快速排序 选择排序 堆排序 基数排序 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。

第 5 页 共 20 页

数据结构课程设计——排序算法比较

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

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

第 6 页 共 20 页

数据结构课程设计——排序算法比较

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

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

七、程序源代码

/********************************************************************************************** 第六题:排序算法比较

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

第 7 页 共 20 页

数据结构课程设计——排序算法比较

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

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

为图表坐标形式)。

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

#include \计时

#define ERROR 0 #define OK 1

#define OVERFLOW -2

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

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; printf(\请输入要排序的元素个数N: \ scanf(\ for(i=1;i<=N;i++) L.r[i]=rand(); //随机产生样本整数

第 8 页 共 20 页