课程设计任务书。
学生姓名: 胡达专业班级: 计算机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 初始化时每个方格都是关闭的,一个...数据结构课程设计
数据结构课程设计
数据结构课程设计