数据结构课程设计综合排序Word格式文档下载.docx

上传人:b****8 文档编号:22873246 上传时间:2023-02-05 格式:DOCX 页数:14 大小:109.90KB
下载 相关 举报
数据结构课程设计综合排序Word格式文档下载.docx_第1页
第1页 / 共14页
数据结构课程设计综合排序Word格式文档下载.docx_第2页
第2页 / 共14页
数据结构课程设计综合排序Word格式文档下载.docx_第3页
第3页 / 共14页
数据结构课程设计综合排序Word格式文档下载.docx_第4页
第4页 / 共14页
数据结构课程设计综合排序Word格式文档下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

数据结构课程设计综合排序Word格式文档下载.docx

《数据结构课程设计综合排序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计综合排序Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。

数据结构课程设计综合排序Word格式文档下载.docx

群 

二O一五年五月二十日

1需求分析

1.1 

任务与分析

任务:

利用随机函数产生N个随机整数(20000以上),对这些数进行多种方法进行排序。

要求:

1)至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。

并把排序后的结果保存在不同的文件中。

2)统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。

分析:

本系统实现了几种常用的排序方法,包括:

插入排序、起泡排序、快速排序(递归、非递归)、堆排序。

1.2功能模块的划分

1.2.1输入模块

利用随机函数产生N个随机整数(20000以上),个数由用户自己输入。

1.2.2输出模块

输出排序前或排序后的数据元素到屏幕显示,并且输出按照选择的算法排序后的数据元素到文件中保存。

1.2.3输出结论

比较不同排序时间长短,输出两种最快的排序方法。

1.2.4排序模块

插入排序

思路:

设有一组关键字{K1,K2,…….,Kn},排序开始变认为K1是一个有序的序列,让K2插入到表长为1的有序序列,使之成为一个表长为2的有序序列,让K3插入到表长为2的有序序列,使之成为一个表长为3的有序序列,依次类推,最后让Kn插入上述表长为n-1的有序序列,得到一个表长为n的有序序列.

冒泡排序

如果有n个数,则要进行n-1趟比较。

在第1趟比较中要进行n-1次两两比较,在第j趟比较中要进行n-j次两两比较

简单选择排序

通过n-I次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录交换之

2概要设计

2.1程序结构框图

2.2程序流程图

2.3头文件

#include<

stdio.h>

stdlib.h>

cstdlib>

time.h>

2.5各种操作函数:

(1)创建一个数组函数:

(2)输出数组函数:

(3)简单选择排序

(4)插入排序函数:

(5)起泡排序函数:

(6)时间函数:

start=clock();

end=clock();

2.6主函数

Voidmain()

{

接受命令(选择要执行的操作);

处理命令;

输出结果;

}

3详细设计

#defineN30001

voidmain()

inti,j,n,k;

intn1,t;

inta[N],b[N],c[3],d[3];

clock_tstart,finish;

inttime1,time2,time3;

输入设计

printf("

*************************数据结构排序综合**************************\n"

);

\n输入要产生的随机数个数:

"

scanf("

%d"

&

n);

srand((unsigned)time(NULL));

for(i=0;

i<

n;

i++)

a[i]=rand();

//插入排序

b[i]=a[i];

---------------------\n"

\t插入排序\n"

start=clock();

for(i=1;

i++) 

//依次插入数字到它前面已经排好序的数字中去

t=b[i];

j=i-1;

while(b[j]>

t&

&

j>

=0)

b[j+1]=b[j];

j--;

if(j!

=(i-1))//第i个数字比前面的都大,不需要重新插入 

b[j+1]=t;

for(i=n-1;

i>

=0;

i--)

%d 

"

b[i]);

finish=clock();

c[0]=finish-start;

\n插入排序耗时%d毫秒!

\n\n\n"

c[0]);

//起泡排序

i++)b[i]=a[i];

-----------------------\n"

\t起泡排序\n"

n1=n-1;

while(n1>

0)

j=0;

if(b[i]>

b[i+1])

b[i]=b[i+1];

b[i+1]=t;

j=i;

n1=j;

t);

 

c[1]=finish-start;

\n起泡排序耗时%d毫秒!

c[1]);

//简单选择排序

-------------------------\n"

\t简单选择排序\n"

k=n-1;

for(j=k-1;

j>

i-1;

j--)

if(b[j]<

b[k])

k=j;

if(k!

=i-1)

t=b[i-1];

b[i-1]=b[k];

b[k]=t;

c[2]=finish-start;

\n简单选择排序耗时%d毫秒!

c[2]);

//寻找两种最快方法

3;

d[i]=c[i];

for(j=i+1;

j<

j++)

if(d[i]>

d[j])

t=d[i];

d[i]=d[j];

d[j]=t;

//printf("

排序这组数据最快的两组排序法是:

\n"

if(d[0]==c[0])

插入排序:

%d毫秒\n"

d[0]);

if(d[0]==c[1])

起泡排序:

if(d[0]==c[2])

简单选择排序:

if(d[0]!

=d[1])

if(d[1]==c[0])

d[1]);

if(d[1]==c[1])

if(d[1]==c[2])

4调试结果

数据由系统随机产生,不需要输入测试数据,产生数据元素的个数由用户输入。

6课程设计总结

通过这次课程设计的学习让我学会了许多,加深了对数据结构排序算法的认识。

在这次课程设计中,独立完成了每种排序算法。

排序算法选了三个,包括:

插入排序、气泡排序、简单选择排序。

同时也实现了随机数的生成。

虽然在算法完成的过程中从网上参考了一些资料,但对这次课程设计的成果还是非常满意的。

这次的课程设计还有很多不足之处。

有些排序方法没有些,像堆排序了,快序排序了。

还有就是最后寻找两种最坏的方法时花了很多时间,想了几种方法,开始用结构体,但发现太麻烦了,所以改用了上述方法。

由于时间限制,只在课程设计快结束时完成了产生随机文件这部分,我想以后有时间再来完成它。

同时在完成这个课程设计后,我也学到了很多知识,并能训练的掌握他们了。

首先学会了随机数的产生。

熟练的撑握了C语言的文件读写操作。

撑握了每种排序算法的基本思想,并从同学那里学会了编写程序的一般步骤:

思考问题,写出解决方案,写出伪代码,完成代码,调试程序。

不像以前那样开始就直接写代码。

当然,还包括如何写出操作简便,感觉友好的界面。

但我还是认为自己还有很多不足,希望以后能弥补。

参考书目

[1] 

《数据结构(C语言版)》。

严蔚敏,清华大学出版社

[2] 

《数据结构习题集(C语言版)》。

[3] 

《C语言课程设计案例精编》。

郭翠英,中国水利出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1