1. 需求分析。
1.1 课程设计目的。
1.2 设计内容及要求。
1.3 问题描述。
1.4 实现方法描述。
2.实现步骤。
2.1 程序实现思路。
2.2 划分程序功能模块。
2.3 系统流程图。
2.4 定义数据结构和各个功能子函数。
2.5 **的编写。
2.6 调试程序。
3.测试程序。
3.1 测试数据及方法。
3.2 选择测试方法的原因。
3.3 测试结果。
3.4 测试结果分析。
4.总结。通过布置具有一定难度的实际程序设计项目,使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法;使学生掌握分析问题,求解问题的方法并提高学生设计编程实现的能力。
基本要求:1. 要求利用c\c++语言来完成系统的设计;
2. 突出c语言的函数特征(以多个函数实现每一个子功能)或者c++语言面向对象的编程思想;
3. 画出功能模块图;
4. 进行简单界面设计,能够实现友好的交互;
5. 具有清晰的程序流程图和数据结构的详细定义;
6. 熟练掌握c语言或者c++语言的各种操作。
创新要求:在基本要求达到后,可进行创新设计,如系统用户功能控制,改进算法的实现,实现友好的人机交互等等 。
功能:设计一个测试程序比较几种内部排序算法的关键字比较次数和移动次数。
要求:1) 界面友好,函数功能要划分好。
2) 总体设计应画出流程图。
3) 程序要加必要的注释。
4) 要提供程序测试方案。
5) 程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值。
1) 对起泡排序、直接排序、简单选择排序、快速排序、希尔排序、堆排序算法进行比较;
2) 排序表中数据数目不小于100 ,表中数据随机产生,至少用5组不同数据集作比较,比较指标有:关键字参加比较次数和关键字的移动次数(关键字交换记为3次移动);
3) 输出比较结果。
4)用描点法绘出各种排序算法对着问题规模增长关键字比较次数和交换次数的变化趋势,同算法本身时间复杂度进行比较。
排序,顾名思义是把一组无序的数据表排列成一组有序的表。为保证程序的高效性,我从以下几方面考虑了程序的设计。
1)数据输入。
往电脑里输入数据是一件很令人头痛的事,更何况为测试排序的效率,往往要对成千上万个数据进行排序,为保证程序测试的快速与高效,数据的输入由随机数产生器生成。
2)数据输出。
由于数据输出到屏幕与程序排序是两个独立的过程,由于排序数据量的往往输出的时间要比排序所花的时间要长很多,所以我准备构建两个独立的功能,一个排序之后输出结果,便于让用户查看排序结果是否正确。在排序的结果得到保证之后,就没有必要输出排序结果了,只需把算法的比较次数、移动次数、运行时间输出即可。
3)程序功能基本框架
通过对以上两方面的分析,程序的基本功能可为下图:
1)概要。算法测试:选择一个算法,对其进行5组测试,其实就是对某一个算法的分析。
算法比较:对所有的排序算法都测试,然后输出排序算法所用的比较次数、移动次数、运行时间,方便用户比较各算法的性能。
验证排序争取性:测试各算法的排序结果是否正确。
2)模块图。
以下内容包含在“"文件中。
typedef struct
elemtype *elem;
int length;
sqlist;
double times[8]; 0 直接 1 希尔 2二分排序 3冒泡 4改进的冒泡 5 快速排序 6快速选择 //7 堆排序此数组用来记录各算法运行时间。
long count[8][2]; 0 比较次数 1 移动次数。
算法函数原型。
status shellinsertsort(sqlist &t,int dk,int c)//当dk为1时为直接插入排序,也可被shell排序调用。
status insertsort(sqlist &t) /直接插入排序。
status shellsort(sqlist &t) /希尔排序。
status binsort(sqlist &t)//二分排序。
status bubblesort(sqlist &t)//冒泡排序。
status gaijinbubblesort(sqlist &t) /改进冒泡排序。
void qsort(sqlist &t,int low,int high)//快速排序。
void selectsort(sqlist &t)//快速选择排序。
void heapsort(sqlist &t)//堆排序。
#include<>
#include<>
#include<>
#include<>
#include<>
#define ok 1
#define error 0
#define overload -1
#define status int详见。
主要是菜单及调用函数。
详见。3.1测试对同一种算法的分析。
3.2 比较多种算法。
3.2验证排序正确性。
数据结构课程设计报告
东莞理工学院城市学院。题目 二叉排序树 专业 计算机科学与技术 本 年级 2010级计算机科学与技术专业 1 班。个人姓名 何振江。指导教师 张娟老师 时间 2010至2011第二学期第18周 地点 实验楼615机房 东莞理工学院城市学院计算机与信息科学系制。2011年 6月。实习报告的内容。一 问...
数据结构课程设计报告
设计一个校园导游程序,为来访的客人提供信息查询服务。1 设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图 无向网 以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。2 存放景点代号 名称 简介等信息供用户查询。3 为来访客人提供图中任意景点相关信息的查询。4 为来访客人提供...
数据结构课程设计报告
河北科技大学。课程设计报告。学生姓名学号。专业班级。课程名称数据结构。学年学期 2 012 2 013学年第 2 学期指导教师 黄春茹。2 0 13年 6 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...