版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计设计报告题 目: 排序演示系统 学 号: 姓 名: 蒲凯春 学 院: 软件学院 专业班级: 07级四班 指导教师: 黄文培 设计时间: 2009-12-23 指导老师评语: 评定成绩: 签名: 日期: 目 录1系统概述11.1项目概述11.1.1项目简介11.1.2项目开发的意义11.2系统需求描述11.2.1功能需求11.3系统环境设计21.3.1硬件环境21.3.2软件环境21.3.3系统接口22系统陈述32.1系统范围32.2用例分析32.2.1识别参与者32.2.2识别用例42.2.3构建用例图32.2.4细化用例图43构建类模型53.1确定类53.1.1寻找类53.1.2筛选
2、类53.1.3准备数据字典53.2确定属性53.4继承分析63.5构建系统包图64状态模型74.1确定状态74.2构建事件跟踪图74.2.1准备交互式脚本74.2.2确定事件84.2.3事件跟踪图84.3构建状态图95交互模型105.1构建顺序模型105.1.1准备场景105.1.2顺序图105.2构建活动模型115.2.1确定活动115.2.2活动图126定义服务136.1服务分析136.2系统最终类图147系统实现147.1系统设计147.1.1优化分析模型147.1.2系统体系结构设计167.1.3用户界面设计167.2类设计178系统测试188.1测试环境188.2用户界面测试189系
3、统使用及说明19结束语21参考文献21附录23谢辞54第1章 系统概述1.1项目概述1.1.1项目简介排序在人们的日常生活和学习、科研、生产等各个方面有着重要的应用。因此掌握常用的排序算法是很必要的。此次课程设计拟开发一个排序算法动画演示系统,以提高对排序算法的掌握程度。 本系统实现八种不同排序算法即:快速排序、冒泡排序、堆排序、直接插入排序、希尔排序、直接选择排序、归并排序、基数排序的排序演示。用户可以选择排序算法以演示输入数据在该排序算法下的排序过程。1.1.2项目开发的意义 随着计算机技术的发展,各种排序算法不断的被提出。排序算法在计算机科学中有非常重要的意义,且应用很广泛。在以后的发展
4、中排序对我们的学习和生活的影响会逐渐增大,很有必要学习排序知识。因此此次毕业设计一方面使自己掌握排序的知识,另一方面锻炼一下独立开发系统的能力。1.2系统需求描述1.2.1功能需求 本系统结构简单,主要有排序算法演示处理和代码显示。该系统的功能结构图如下:排序算法动画演示系统快速排序演示排序演示显示代码冒泡排序演示堆排序演示直接插入排序演示希尔排序演示直接选择排序演示归并排序演示基数排序演示显示各排序算法 的代码输入数据输入数据图1.1 系统功能图1)排序算法演示处理 排序算法演示模块能够根据用户选择的排序算法对数据进行排序,动态的显示出排序过程。2)代码显示 用于显示用户选择的排序算法的代码
5、。1.3系统环境设计1.3.1硬件环境A一台Intel系列的微机B内存要求在512M及其以上CTCL或液晶显示器或等离子显示器一台1.3.2软件环境AWindows2000或Windows XP及其以上操作系统B安装有JDK6及其以上开发包1.3.3系统接口本系统要求有JDK6及其以上开发包就行,所以在实现上不是很复杂不需要什么系统接口。第2章 系统陈述2.1系统范围 对于排序算法演示,本系统用用户输入的数据进行各种排序,并显示各排序算法的代码。2.2用例分析2.2.1识别参与者参与者就是系统在执行的过程中不可缺少的且与系统有交互行为的外部实体、对象或系统。1.用户打开系统界面进行想要的操作或
6、不进行任何操作。2.用户输入数据。3.用户可以从界面上选择所要进行排序演示。4.系统将数据的排序演示过程和用户所选的排序算法的代码呈现给用户。5.系统退出。经过上述分析,发现系统在执行的过程中只有两个参与者,它们是用户和界面。图2.1显示了这两个参与者。 用户界面 图 2.1 参与者2.2.2识别用例用例是系统执行的外部可见的产生对参与者有价值结果的动作序列。基于问题陈述给出以下分析并从中发现系统用例。1.使用者打开系统界面,输入数据并从中选择排序算法。2.系统显示相应排序演示操作并显示相应排序算法的代码。从上述分析中我们可以初步识别出系统用例:输入数据、选择排序算法、排序演示、显示代码,图2
7、.2给出了这四个用例。 选择排序算法排序演示显示代码输入数据图2.2 系统用例2.2.3构建用例图 用户排序算法演示用户 输入数据处理数据显示结果图2.3 系统用例图(一)2.2.4 细化用例图将用例细化可得到分解的用例:将“排序演示”用例分解为:A:选择排序算法 从界面上选择要进行排序的排序算法B:确定数据移动顺序 根据选择的排序算法确定数据移动顺序C: 演示排序过程 显示选择的排序算法对输入数据的排序过程和排序算法代码用户界面排序算法演示提供提供显示排序算法代码排序演示选择排序算法输入数据提供图 2.4 系统用例图(二)Extend第3章 构建类模型3.1确定类3.1.1寻找类根据名词识别
8、法从需求陈述中获取如下类与对象:系统 界面 输入数据 数据 排序代码 排序演示 算法演示过程 用户 代码 。3.1.2筛选类1.无关删除本系统进行特征提取只关心数据、算法、排序代码、算法演示过程等处理过程,其它的都不是本系统关心的。在上面获取的对象中 系统和用户和本系统内部处理无关,所以需要删除。2.与实现相关的删除用户输入的数据,并不能作为一个独立的类进行操作,所以需要删除。3.重复删除排序代码和代码在此都表示排序算法代码,所以删除排序代码。4.最终确定的类经过以上几步的筛选且由于功能简单确定为一个类: 排序演示。3.1.3准备数据字典上一步确定了一个类,对这个类进行介绍:排序演示:该类主要
9、是呈现给用户的图像界面,把数据排序的演示过程和排序算法的代码呈现给用户。3.2确定属性属性是对象或类的数值特性及对象或类的性质,借助属性能够对对象和类的结构有更清晰的认识,以下来分析本系统所属类的属性。本系统有一个类:排序演示。根据问题陈述,首先要的把本系统所具有的功能呈现给用户,其次需要用户选择排序算法,把输入的数据按照选择的排序算法得到的排序过程和排序代码显示给用户。具有的属性为排序算法名(即用户选择的排序算法的名字,由用户按按钮获得)。所以属性可以说是排序算法选择按钮。其次在演示过程用于对数据进行排序,确定数据移动的顺序,具有的属性为:速度。显示用户选择的排序算法的代码。具有的属性为:排
10、序算法名(同上)。所以排序演示类具有的属性为:排序算法选择按钮、速度。经过上述分析给出带有属性的类图:导出使用演示过程排序算法名 速度图3.2 含属性的类图3.4继承分析在本系统中有一个类:排序演示类。所以本系统不存在泛化关系。3.5构建系统包图包是将有着公共主题的一组元素,本系统含有一个类。所以将本系统的类为一个包:排序演示包。图3.3显示了本系统的包图。排序过程图3.3系统包图图3.4描述了排序演示包的构成。 排序演示包构成演示过程排序算法名 速度图3.4演示过程包的构成第4章 状态模型4.1确定状态状态是对象的生命周期中的一个条件或状况,在此期间对象将满足某些条件、执行某些活动或等待某些
11、事件。当用户启动本系统的界面时系统开始运行,经过显示排序过程和显示排序算法的代码结束本次处理。在这个过程中具有多个状态,首先用户需要启动界面,接着接受用户输入的数据,接受用户的选择,然后显示排序过程和排序算法的代码,下一次开始或结束。排序演示类有如下状态:开始(用户启动界面),运行状态(接受用户输入、选择开始处理)结束状态(传递处理结果)。4.2构建事件跟踪图4.2.1准备交互式脚本脚本是指系统在某一次执行期间出现的一系列事件,即序列事件。每当系统进行一次执行时系统中对象与外界用户交换信息即产生一个事件开始,继而产生一系列事件触发整个过程的执行直到结束。系统一次执行过程中的正常脚本:1.用户启
12、动系统界面2.系统界面要求用户输入待排序的数据3.系统界面接受用户输入的数据4.系统界面要求用户选择排序算法5.系统界面接受用户选择的排序算法,并传递排序算法名进行处理6.系统界面接受处理结果7.系统界面显示演示过程和用户选择的排序算法的代码 8.下一次运行或系统退出系统一次执行过程中的异常脚本:1.用户启动系统界面2.系统界面要求用户输入数据3.系统界面要求用户选择排序算法4.系统界面结束用户选择排序算法5.系统界面确认出错,系统内部处理出错6.系统界面取消此次操作7.系统界面请求用户输入数据8.系统界面请求选择排序算法4.2.2确定事件根据脚本确定如下事件:启动界面、要求输入、要求选择、接
13、受选择、传递排序算法名、接受处理结果、显示演示过程和用户选择的排序算法的代码、等待下一次运行或系统退出等。4.2.3事件跟踪图从上一节中找出了该系统在一次执行过程中的所发生的事件,和这些事件相关的对象为用户、界面、演示过程、代码等。那么此节的事件跟踪图就是把这些事件和相应的对象清晰的表示出来,竖线代表对象,箭头代表发生的事件。事件跟踪图如图4.1所示: 用户界面演示过程类启动界面要求选择选择算法接受选择传输结果传输结果显示结果系统退出要求输入接受输入等待关闭图4.1 系统事件跟踪图4.3构建状态图下面给出了排序演示类的状态图:启动do:启动界面启动界面要求选择接受do:接受选择退出do:退出系
14、统显示do:显示排序算法代码处理do:演示处理返回结果显示接受do:接受输入要求输入显示do:显示排序过程 图4.2排序演示类的状态图第5章 交互模型本章主要用顺序图、活动图来描述交互模型。顺序图显示交互的对象和交互的时间顺序,而活动图显示计算的处理步骤之间的控制流。5.1构建顺序模型顺序建模用于描述对象之间的动态交互关系,着重体现了对象间消息传递的时间顺序。顺序模型包括俩部分:一是场景的准备,二是构建顺序图。5.1.1准备场景场景包含对象之间的消息以及对象所执行的活动,每条消息把信息从一个对象传递到另一个对象。以下是本系统的一个与实际用户交互的场景:1.某一用户启动系统界面2.系统显示系统界
15、面3.系统等待用户输入数据4.用户输入数据5.系统等待用户选择排序算法6.用户选择排序算法7.系统接受用户选择排序算法8.系统界面把处理结果显示出来,并呈现给用户9.系统等待下一次运行或关闭界面10.用户关闭界面11.系统退出5.1.2顺序图顺序图描述了对象随时间的推移相互之间交互信息的过程,其中显示的对象沿竖轴排列,而交互的信息沿水平轴按时间的顺序排序。 用户界面启动演示过程显示界面等待选择选择算法接受选择等待处理要求处理传递算法名传递结果显示结果等待关闭关闭界面退出等待输入输入数据接受输入图5.1系统顺序图5.2构建活动模型5.2.1确定活动一个活动是一个状态机中进行的非原子的执行单元,活
16、动的执行最终会演化成一系列独立的动作的执行。而每个动作的执行将会改变系统的状态和消息的传递。一个动作可以调用另一个动作,同时也可以发送一个信号。以下是本系统某一次执行过程,可以从中活动系统一次执行过程中的活动。1.用户要求进行排序算法演示并显示排序代码2.用户需要启动系统3.用户输入数据4.用户选择排序算法5.系统对数据进行排序处理6.系统对数据进行移动处理7.系统对排序算法进行显示处理 8.系统显示排序演示过程和排序算法的代码 9.系统等待下一次运行或此次处理结束,活动终止5.2.2活动图活动图主要用于描述系统在一次执行过程中各种活动的执行顺序,即描述一个操作中的所要进行的各种活动的执行流程
17、。一个活动图一般包括动作、活动节点、流和对象值。图5.2给出了本系统在一次执行过程的活动图。要求演示用户启动系统选择算法排序演示结束显示排序算法代码输入数据图5.2系统活动图第6章 定义服务在第三章中的类模型无法完全确定各个类的服务,而建立的状态模型和交互模型之后,才能最终确定服务,因为这两个模型确定了系统各类应具有的服务。6.1服务分析确定服务需要从两个方面进行:一是类实体的常规行为,二是系统中特殊需要的行为。1.常规行为直接从类中导出操作,一般类都定义了属性,而每个属性都是可以被访问的,即每个含有属性的类 应该定义能够访问该类属性的服务。排序演示类含有两个属性,定义访问排序算法名和数据移动
18、的速度的服务。2从状态模型中导出操作第四章确定了如下事件:要求输入、接受输入、要求选择、接受选择、传递排序算法名、接受处理结果、显示演示过程和排序算法的代码、系统退出。我们可以从中导出如下服务:选择排序算法、传递排序算法名、显示演示过程和排序算法的代码、系统退出等服务。3.从交互模型中导出操作顺序图描述了对象之间动态的交互关系,并且描述了这些对象随时间的推移相互之间交互信息的过程。对象之间的交互信息必须启动相应的操作来完成。我们可以从顺序图得出如下服务:显示界面、输入数据、选择排序算法、传递排序算法名、显示演示过程和排序算法的代码、关闭界面等。我们从活动图中可得到如下操作:输入数据、选择排序算
19、法、对数据进行排序处理、对数据进行移动处理、排序算法进行显示处理、显示排序演示过程、显示排序算法的代码。4.确定服务从上面得出了两个服务,因为速度服务可以用休眠时间控制,经过对得到的服务进行筛选和合并相同服务,得出如下最终服务:获得排序算法名,即获得用户选择的按钮。6.2系统最终类图经过以上分析我们得出了类以及类的属性和操作,下面对各类进行描述和建立含属性、操作的类图。(1)类描述1.排序演示类属性:排序算法选择按钮服务:获得排序算法名、显示排序演示过程、显示排序算法代码作用:接受用户选择的排序算法名、使数据移动、显示排序演示过程、显示排序算法代码等。(2)最终类图导出演示过程排序算法名 速度
20、输入数据选择算法控制数据移动速度排序演示显示排序算法代码图6.1最终类图第7章 系统实现在分析阶段已经明确系统应该做那些内容,本章系统实现就是把系统应该做的事情转变成系统的实现方案。7.1系统设计7.1.1优化分析模型本系统的功能就是将用户输入的数据在用户选择的排序算法下的排序过程经过一系列的处理最后将得到的排序演示和排序算法的代码显示给用户。所以可以将本系统划分为四个子系统:输入子系统、选择子系统、处理子系统和显示子系统。输入子系统主要实现待排序数据的输入、选择子系统主要实现排序算法的选择;处理子系统主要是处理数据排序、数据移动处理等;显示子系统主要是把最后得到的排序演示和排序算法的代码显示
21、在界面上。图7.1给出了本系统的子系统之间的关系。选择子系统处理子系统显示子系统排序算法演示系统排序算法名结果输入子系统数据图7.1子系统图输入子系统主要是当用户输入数据时接受数据;选择子系统主要是当用户选择排序算法时接受选择;处理子系统主要使数据的移动和排序算法的代码显示出来;显示子系统将得到的排序演示过程和排序算法的代码显示出来。图7.2给出了系统的架构: 用户用户界面处理子系统显示子系统界面输入子系统演示过程界面显示演示过程数据移动处理结果显示排序算法代码选择子系统界面选择排序算法输入数据图7.2子系统架构图7.1.2系统体系结构设计本系统经过用户选择排序算法开始执行,只能由用户激发系统
22、开始执行,一次只能处理一种排序算法演示,一次处理完成之后,然后系统将处理的结果反馈给用户。由用户和系统交互来支配系统的运行。下图给出了本系统的交互图: 系统使用者选择算法排序演示显示代码图7.4系统体系结构图7.1.3用户界面设计本系统功能简单,没有高复杂性。只要求能够使用户选择排序算法和将最终的排序演示和排序算法的代码显示出来,需要用户操作的只有选择排序算法,之后就可看到结果。本系统只要有供选择排序算法的按钮就行了图7.5系统界面图7.2类设计在分析模型中找出的类有如下特点:(1)该类是根据系统所具备的功能得到的比较理想的类。(2)类中的属性和操作也只是实现系统功能的主要的一部分。(3)类之
23、间的联系比较模糊不利于实际中编码。针对这些特点本节继续对分析模型找到的类进行优化以使利于编码。1.对类编码化对分析模型中到的和前一节中增添的类进行程序化。排序演示类(SortCartoonDemo)属性:Button /排序算法按钮名 操作: kuaiShuSort()/显示演示过程maoPaoSort()duiSort()zhiJieChaRuSort()shellSort()zhiJieXuanZheSort()guiBingRort()jiShuSort()ScoreTextArea.insert(string,sp)/显示排序算法代码 2.优化类联系 由于本系统只有一个类,所以不存在类
24、联系。3.类描述排序演示类public class SortCartoonDemo extends JFrameprivate JButton kuaisuButton; /快速排序按钮private JButton maoPaoButton; /冒泡排序按钮private JButton duiButton; /堆排序按钮private JButton zhiJieChaRuButton; /直接插入排序按钮private JButton shellButton; /希尔排序按钮private JButton zhiJieXuanZheButton;/直接选择排序按钮private JBut
25、ton guiBingButton; /归并排序按钮private JButton jiShuButton; /基数排序按钮private TextArea ScoreTextArea;/显示各种排序算法代码的显示框private void kuaiShuSort();private void maoPaoSort()private void duiSort()private void zhiJieChaRuSort()private void shellSort()private void zhiJieXuanZheSort()private void guiBingSort()privat
26、e void jiShuSort() 第8章系统测试8.1测试环境软件测试环境:Windows XP操作系统,编程工具选用JDK6硬件测试环境:内存要求在512M及其以上奔腾系列机8.2用户界面测试用户界面是用户和系统的接口,一个好的用户界面不仅要求能够方便用户使用而且美观。所以用户界面测试的主要任务是测试用户界面是否友好,界面上的各个控件是否好用。启动应用程序,选择一个排序算法对界面进行测试,测试发现界面未发现不友好现象。8.1系统测试图(一)第9 章 系统使用及说明本系统使用说明如下:1.启动应用程序,会出现如下系统界面9.1系统说明图(一)2.按下八个排序算法按钮中的一个。9.2系统说明
27、图(二)3.显示数据在该排序算法下的排序演示和该排序算法的代码。9.3系统说明图(三)4.关闭窗口9.4系统说明图(四)结束语排序算法是计算机科学中一个重要的部分,掌握好它对以后的学习有很大的帮助。目前只学习了几种基本的排序算法,还有更多的排序算法需要学习。通过此次课程设计,第一使我进一步学习了排序算法。了解到排序算法应用广泛。及排序技术在现实生活中的重要性。第二使我感到自己知识的不足,Java中有很多东西,自己只略懂皮毛,尤其对于线程方面的知识很缺乏。还有就是发现软件工程学得很差,很多地方感到无从下手。第三使我意识到做事情要认真,要坚持。由于疏忽和马虎浪费了很多时间。开始做的时候遇到了一些困
28、难,我放弃了,中间有好长一段时间没理它。如果坚持一下,可能很快就会解决。最后我要感谢帮助我的学长,在做课程设计的过程中不仅给我提供了宝贵的资料和还给我提供了很多指导和建议,使我能够顺利的完成课程设计。参考文献1朱战立.数据结构 使用C语言M.(第三版).西安:西安交通大学出版社, 2004.234-2572Bruce Eckel .Java编程思想M.(第四版).北京:机械工业出版社, 2007.6.669-6723Ian Sommerville.软件工程M.(第八版).北京:机械工业出版社, 2006.9.245-2604王克宏、董丽、朱家维.Java技术及其应用M.(第一版).北京:高等教
29、育出版社,1999.125-1385张海藩.软件工程导论M.(第三版).北京:清华大学出版社,1998.38-416Mark Allen Weiss.数据结构与算法分析M.(第二版).北京:机械工业出版社,2008.3.183-1957张曜、张青、郭立山.Java程序设计教程M.(第一版).北京:清华大学出版社,2002.11.38-418James Cohoon、Jacket Davidson.Java程序设计M.(第一版). 北京:清华大学出版社,2005.7.563-5709Herbert Schildt Java实用教程M.(第四版). 北京:清华大学出版社,2006.4.348-35
30、110宋雨、赵文清. 软件工程M.(第一版).北京:中国电力出版社,2007.182-198代码清单:package SortCartoonDemo;import java.awt.*; import java.awt.event.*; import javax.swing.*; public class SortCartoonDemo007 extends JFrameprivate Panel panel;private JLabeln;private JLabel ppnumber;private JTextField inputField;private JTextField choi
31、ce;private JLabel select;private JButton kuaisuButton; /快速排序按钮private JButton maoPaoButton; /冒泡排序按钮private JButton duiButton; /堆排序按钮private JButton zhiJieChaRuButton; /直接插入排序按钮private JButton shellButton; /希尔排序按钮private JButton zhiJieXuanZheButton;/直接选择排序按钮private JButton guiBingButton; /归并排序按钮priva
32、te JButton jiShuButton; /基数排序按钮private TextArea ScoreTextArea;/显示各种排序算法代码的显示框public SortCartoonDemo007() Container container = getContentPane();container.setLayout(null);panel = new Panel();this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(900,700); this.setLocationRelativeTo(null);
33、this.setResizable(false); this.setAlwaysOnTop(true); JLabel l = new JLabel(输入12 个数据,只能输入2组:); select=new JLabel(选择一种排序方法);kuaisuButton=new JButton(1快速排序);maoPaoButton=new JButton(2冒泡排序);duiButton=new JButton(3堆排序);zhiJieChaRuButton=new JButton(4直接插入排序);shellButton=new JButton(5希尔排序);zhiJieXuanZheBut
34、ton=new JButton(6直接选择排序);guiBingButton=new JButton(7归并排序);jiShuButton=new JButton(8基数排序);ScoreTextArea=new TextArea();ScoreTextArea.setBounds(300, 150, 680, 500);/各种排序算法代码:final String kuaisuString =/快速排序 +n+void QuickSort(DataType a, int low, int high)+n+/用递归方法对数据元素alow-ahigh进行快速排序+n+ +n+ int i = l
35、ow, j = high;+n+ DataType temp = alow; /取第一个元素为标准数据元素+n+ while(i j)+n+ +n+ while(i j & temp.key = aj.key) j-; /在数组的右端扫描+n+ if(i j)+n+ +n+ ai = aj;+n+ i+;+n+ +n+ while(i j & ai.key temp.key) i+; /在数组的左端扫描+n+ if(i j)+n+ +n+ aj = ai;+n+ j-;+n+ +n+ +n+ ai = temp;+n+ if(low i) QuickSort(a, low, i - 1); /
36、对左端子集合进行递归+n+ if(j high) QuickSort(a, j + 1, high); /对右端子集合进行递归+n+;final String maoPaoString =/冒泡排序 +n+void BubbleSort(DataType a, int n)+n+ +n+int i, j, flag = 1;+n+DataType temp;+n+for(i = 1; i n & flag = 1; i+)+n+ +n+flag = 0;+n+for(j = 0; j n - i; j+) /j aj + 1.key)+n+ +n+flag = 1; /交换则flag = 1+
37、n+temp = aj;+n+aj = aj + 1;+n+aj + 1 = temp;+n+n+n+n+;final String duiString =void CreatHeap(DataType a, int n, int h) /创建堆+n+ +n+int i, j, flag;+n+DataType temp;+n+i = h; /i为要建堆的二叉树根结点下标+n+j = 2 * i + 1; /j为i的左孩子结点的下标+n+temp = ai;+n+flag = 0;+n+while(j n & flag != 1) /沿左右孩子中值较大者重复向下筛选+n+ +n+if(j n
38、- 1 & aj.key aj.key) /ai.key aj.key+n+flag = 1; /标记结束筛选条件+n+else /否则把aj上移 +n+ ai = aj;+n+ i = j;+n+ j = 2 * i + 1;+n+ +n+n+ai = temp; /把最初的ai赋予最后的aj+n+ +n+n+/初始化创建最大堆+n+void InitCreatHeap(DataType a, int n)+n+ +n+int i;+n+for(i = (n - 1) / 2; i = 0; i-)+n+CreatHeap(a, n, i);+n+n+n+/堆排序+n+void HeapSo
39、rt(DataType a, int n)+n+ +n+int i;+n+ DataType temp;+n+ InitCreatHeap(a,n); /初始化创建最大堆+n+ for(i = n - 1; i 0; i-) /当前最大堆个数每次递减1+n+/把堆顶a0元素与当前最大堆的最后一个元素交换+n+temp = a0;+n+a0 = ai;+n+ai = temp;+n+CreatHeap(a, i, 0); /调整根结点满足最大堆+n+n+;final String zhiJieChaRuString =/直接插入排序+n+void InsertSort(DataType a, i
40、nt n)+n+ +n+ int i, j;+n+ DataType temp;+n+ for(i = 0; i -1 & temp.key aj.key)+n+ +n+ aj + 1 = aj;+n+ j-;+n+n+aj + 1 = temp;+n+n+;final String shellString =/希尔排序+n+ void ShellSort(DataType a, int n, int d, int numOfD)+n+ /对元素a0-an - 1排序,d0-dnumOfD - 1为希尔增量值.+n+ +n+ int i, j, k, m, span;+n+ DataType
41、temp;+n+ for(m = 0; m numOfD; m+) /共numOfD次循环+n+ +n+ span = dm; /取本次的 增量值+n+ for(k = 0; k span; k+) /共span个小组+n+ /组内是直接插入排序,区别是每次不是增1而是增span.+n+ for(i = k; i -1 & temp.key = aj.key)+n+ +n+ aj + span = aj;+n+ j = j - span;+n+ +n+ aj + span = temp;+n+ +n+ +n+ +n+;final String zhiJieXuanZheString =/直接选择排序+n+ void SelectSort(DataType a, int n)+n+ +n+ int i, j, small;+n+ DataType temp;+n+ for(i = 0; i n - 1; i+)+n+ +n+ small = i; /设第i个数据元素关键字最小 +n+ for(j = i + 1; j n; j+) /寻找关键字最小的数据元素+n+ +n+if(aj.key
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数据分析-成对数据的统计分析+课件-2026届高三数学二轮复习
- 基本外科考试试题及答案
- 2026五年级数学 人教版数学乐园植树问题变式四
- 2026年长沙出版中考试卷及答案
- 2026三年级数学下册 年月日单元易错纠正
- 2026二年级数学下册 质量单位的认识
- 供应商服务评价制度
- 2026二年级数学上册 加减法知识点
- 2026九年级上语文组织技巧指导方法
- 青协项目部奖惩制度范本
- 5.1人民代表大会制度 课件(23张幻灯片)+内嵌视频 道德与法治统编版八年级下册
- 动火作业与受限空间安全管理标准
- 2026年包头轻工职业技术学院单招综合素质考试题库附答案详解(基础题)
- 2026年当辅警笔试题库及一套完整答案
- 2026年兴安职业技术学院单招职业倾向性测试题库及答案详解(新)
- 国家基层糖尿病防治管理指南(2025版)
- 2025年国企招聘考试(建筑工程及造价)经典试题及答案
- (2026)中华人民共和国海关注册登记和备案企业信用管理办法解读课件
- 2025CSCO胰腺癌诊疗指南课件
- 慈善基金会内控制度
- DB15∕T 385-2025 行业用水定额
评论
0/150
提交评论