数据结构课程设计报告

发布 2022-10-05 02:56:28 阅读 3427

实现排序。

—使用链表完成。

猴子选大王。

使用循环链表完成。

班级: 软件091

姓名: 廖扬华。

指导教师: 董跃华 ,井福荣

成绩。信息工程学院。

2011 年 6 月 24日。

摘要。排序问题是计算机科学中基本而重要的基础问题, 是算法设计、系统开发与应用实践既密切相关、又屡见不鲜的重要基本。排序, 分为基于内存的内( 部) 排序与面向外存的外( 部) 排序。

一般说来, 内排序是外排序的基础( 因外排序往往离不开内排序) 。

实现排序:设一单向链表的头指针为head,链表的记录中包含着整数类型的key域,试设计算法,将此链表的记录按照key递增的次序进行就地排序。(不允许使用数组做辅助存储)此问题的就是对输入的数值key进行排序的一个过程。

其目的是将一组“无序”的记录序列调整为“有序”的记录序列,本设计用了链表实现了数据的快速排序和选择排序。

关键字:链表,排序。

附录:参考文献。

程序源**。

众所周知, 排序问题是计算机科学中基本而重要的基础问题, 是算法设计、系统开发与应用实践既密切相关、又屡见不鲜的重要基本。排序, 分为基于内存的内( 部) 排序与面向外存的外( 部) 排序。一般说来, 内排序是外排序的基础( 因外排序往往离不开内排序) 。

长期以来, 数组作为人们最常见、最常用、最习惯的内排序工具, 使许多人习以为常地误认为它似乎就是唯一好用的内排序工具。但事实并非如此, 因为对那些采用链表作为主体数据结构的理论研究课题与实际应用问题, 所论课题性质与问题场景涉及到其所论数据集的频繁增删、动态排序、顺序查找与随机检索等基本运算时, 如果再机械地沿袭通常基于数组的内排序方法, 势必会因其! 作为中间数据处理场的数组与作为目标数据处理场的链表之间, 必定存在不可避免的数据对倒。

而付出大量的时间开销, 严重降低解决所论课题与问题相关处理的算法效率。事实上, 此时别开生面、新颖明智地采用基于链表的排序算法, 是有效提高解决所论课题与问题相关处理算法效率的可行途径之一。

1)本次程序设计是对使用链表的功能进行排序由排序方法的比较表可知插入、冒泡排序的速度较慢。当n较小时,对稳定性不作要求时宜用选择排序,对稳定性有要求时宜用插入或冒泡排序。当n较大时,关键字元素比较随机,对稳定性没要求宜用快速排序。

2)待排序表的元素的关键字为整,用任意顺序程度的不同数据作测试比较;一个好的排序方法所需要的比较次数和占用的存储空间都应该较少,所以我们要尽量使排序时间效率较高,但空间复杂度较低。

3)只要使用主函数调用就可以实现所需要的排序结果,并且每种排序都可以实现每一趟的排序结果,这里运用了一个for循环语句来实现我所想要的结果,这样可以很清楚的看出每一趟的排序结果,增加排序的可读性。

4)快速排序是通过比较关键码、交换记录,以某个记录为界(该记录称为支点),将待排序列分成两部分。其中,一部分所有记录的关键码大于等于支点记录的关键码,另一部分所有记录的关键码小于支点记录的关键码。我们将待排序列按关键码以支点记录分成两部分的过程,称为一次划分。

对各部分不断划分,直到整个序列按关键码有序。

建立一个链表,初始化链表,把key按照输入的顺序先存储在链表里,然后按照从小到大的顺序排列,输出结果按key从小到大排序。从第一个节点开始,找出链表中key最小的为第一个头结点,依次排序;用两层for循环,第一层主要链表的排序,第一次找到最小结点,phead指向最小节点,link为主排序的头指针,随着循环,phead依次向后指向较大结点。tp在结点移动中为当前结点p的前一个结点。

以phead->next为空结束,否则会出现结点丢失。

效率分析】空间效率:快速排序是递归的,每层递归调用时的指针和参数均要用栈来存放,递归调用层次数与上述二叉树的深度一致。因而,存储开销在理想情况下为o(log2n),即树的高度;在最坏情况下,即二叉树是一个单链,为o(n)。

时间效率:在n个记录的待排序列中,一次划分需要约n次关键码比较,时效为o(n),若设t(n)为对n个记录的待排序列进行快速排序所需时间。

理想情况下:每次划分,正好将分成两个等长的子序列,则t(n)≤cn+2t(n/2) c是一个常数。

模块图。快速排序的算法流程图。

选择排序流程图。

真。选择排序:

void initlink(linkadt *link)

void sortlink(linkadt link)

tp在结点移动中为当前结点p的前一个结点。以phead->next为空结束,否则会出现结点丢失。

void printlink(linkadt link) psttmp1 = psthead;

//链表初始化。

int nn;

数据结构课程设计报告

东莞理工学院城市学院。题目 二叉排序树 专业 计算机科学与技术 本 年级 2010级计算机科学与技术专业 1 班。个人姓名 何振江。指导教师 张娟老师 时间 2010至2011第二学期第18周 地点 实验楼615机房 东莞理工学院城市学院计算机与信息科学系制。2011年 6月。实习报告的内容。一 问...

数据结构课程设计报告

设计一个校园导游程序,为来访的客人提供信息查询服务。1 设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图 无向网 以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。2 存放景点代号 名称 简介等信息供用户查询。3 为来访客人提供图中任意景点相关信息的查询。4 为来访客人提供...

数据结构课程设计报告

河北科技大学。课程设计报告。学生姓名学号。专业班级。课程名称数据结构。学年学期 2 012 2 013学年第 2 学期指导教师 黄春茹。2 0 13年 6 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...