数据结构课程设计

发布 2022-10-05 01:54:28 阅读 7161

课程设计任务书。

学生姓名: 胡达专业班级: 计算机0708班

指导教师: 高曙工作单位: 计算机科学系

题目: 快速、冒泡排序算法比较。

初始条件:试通过随机数据比较快速排序、起泡排序各算法的关键字比较次数和关键字移动次数。

1)待排序表的表长不小于100;其中的数据要用伪随机数产生程序产生;至少要用5组不同的输入数据作比较;比较的指标为有关键字参加的比较次数和关键字的移动次数(关键字交换计为3次移动)。

2)最后要对结果作出简单分析,包括对各组数据得出结果波动大小的解释。

3)对冒泡排序应指出进行了多少趟。

要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

课程设计报告按学校规定格式用a4纸打印(书写),并应包含如下内容:

1、 问题描述。

简述题目要解决的问题是什么。

2、 设计。

存储结构设计、主要算法设计(用类c语言或用框图描述)、测试用例设计;

3、 调试报告。

调试过程中遇到的问题是如何解决的;对设计和编码的讨论和分析。

4、 经验和体会(包括对算法改进的设想)

5、 附源程序清单和运行结果。源程序要加注释。如果题目规定了测试数据,则运行结果要包含这些测试数据和运行输出,6、 设计报告、程序不得相互抄袭和拷贝;若有雷同,则所有雷同者成绩均为0分。

时间安排:1、第19周完成。

月x日x时到计算中心检查程序、交课程设计报告、源程序(cd光盘)。

指导教师签名2024年07月26日。

系主任(或责任教师)签名年月日。

快速、冒泡排序的算法比较。

1.问题分析和任务定义。

1.1问题分析。

编程实现快速、冒泡两种排序算法,两者之间的算法好坏比较主要有两个方面:数据比较次数和数据移动次数。在该程序中,首先对两种排序算法进行实现,然后再进行比较。

1.2任务定义。

1.2.1 快速排序定义。

快速排序也叫做分区排序,是目前应用最广泛的排序算法。它采用分治法进行排序。其基本思想是任取待排序元素序列中的某个元素(例如取第一个元素)作为基准,按照该元素的排序码大小,将整个元素序列划分为左右两个子序列;左侧子序列中所有元素的排序码都小于基准元素的排序码,右侧子序列中所有元素的排序码都大于或等于基准元素的排序码,基准元素则排在这两个子序列中间。

然后分别对这两个子序列重复实行上述方法,直到所有的元素都排在相应的位置上为止。

1.2.2 冒泡排序定义。

冒泡排序又称起泡排序,它也是一种简单实用的排序方法。其基本思想是通过相邻记录之间关键字的比较和交换,使关键字值较小的记录逐渐的从底部移向顶部,即从下标较大的单元移向下标较小的单元,就像水底的气泡一样逐渐向上冒;而关键字较大的记录就像石块往下沉一样,每一趟有一块“最大”的石头沉到水底。

2.开发平台。

处理器:intel pentium 4 2.4ghz

物理内存:512m

操作系统:microsoft windows xp

开发环境:microsoft visual 2003

3.程序设计。

3.1快速排序。

3.1.1排序表的类定义。

#ifndef datalist_h

#define datalist_h

#include <>

const int defaultsize = 100;

template class datalist

template

class element

type getkey (

int operator ==element& x )

return key ==x->key判this ==x

int operator <=element& x )

return key <=x->key判this x

int operator < element& x )

return key < x->key判this < x

int operator > element& x )

return key > x->key判this > x

template class datalist

void sort排序

void swap ( element & x对换

element & y )

3.1.2快速排序算法的描述。

quicksort ( list )

if ( list的长度大于1) {

将序列list划分为两个子序列leftlist 和 right list;

quicksort ( leftlist );

quicksort ( rightlist );

将两个子序列 leftlist 和 rightlist合并为一个序列list;

3.1.3快速排序的算法。

#include”

template

void datalist ::quicksort ( const int left,const int right )

/在序列 leftright 中递归地进行快速排序

if ( left < right

int pivotpos = partition ( left, right );划分

对左序列同样处理

quicksort ( left, pivotpos-1

对右序列同样处理

quicksort ( pivotpos+1, right );

template

int datalist ::partition ( const int low, const int high )

int pivotpos = low基准位置

element pivot = vector[low];

for ( int i = low+1; i <=high; i++

if ( vector[i]

pivotpos++;

if ( pivotpos !=i )

swap ( vector[pivotpos], vector[i] )

小于基准对象的交换到区间的左侧去

swap ( vector[low], vector[pivotpos] )

return pivotpos;

3.2冒泡排序。

#include”

template

void datalist ::bubblesort (

int pass = 1; int exchange = 1;

数据结构课程设计

课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...

数据结构课程设计

数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...

数据结构课程设计

班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...