【DOC】-数据结构课程设计报告---几种排序算法的演示(附源代码).docVIP

【DOC】-数据结构课程设计报告---几种排序算法的演示(附源代码).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【DOC】-数据结构课程设计报告---几种排序算法的演示(附源代码).doc

数据结构课程设计报告---几种排序算法的演示(附源代码) ?? ??数据结构课程设计报告 ??—几种排序算法的演示 ?? ??时间:2010-1-14 ?? ??一 需求分析 ??运行环境 ??Microsoft Visual Studio 2005 ?? ??程序所实现的功能 ??对直接插入排序、折半插入排序、冒泡排序、简单选择排序、快速排序、堆排序、归并排序算法的演示,并且输出每一趟的排序情况。 ?? ??程序的输入(包含输入的数据格式和说明) ??1排序种类三输入 ??2排序数的个数的输入 ??3所需排序的所有数的输入 ?? ??程序的输出(程序输出的形式) ??1主菜单的输出 ??2每一趟排序的输出,即排序过程的输出 ?? ??二 设计说明 ?? ??算法设计思想 ?? ??1交换排序(冒泡排序、快速排序) ??交换排序的基本思想是:对排序表中的数据元素按关键字进行两两比较,如果发生逆序(即排列顺序与排序后的次序正好相反),则两者交换位置,直到所有数据元素都排好序为止。 ?? ??2插入排序(直接插入排序、折半插入排序) ??插入排序的基本思想是:每一次设法把一个数据元素插入到已经排序的部分序列的合适位置,使得插入后的序列仍然是有序的。开始时建立一个初始的有序序列,它只包含一个数据元素。然后,从这个初始序列出发不断插入数据元素,直到最后一个数据元素插到有序序列后,整个排序工作就完成了。 ?? ??3选择排序(简单选择排序、堆排序) ??选择排序的基本思想是:第一趟在有n个数据元素的排序表中选出关键字最小的数据元素,然后在剩下的n-1个数据元素中再选出关键字最小(整个数据表中次小)的数据元素,依次重复,每一趟(例如第i趟,i=1,…,n-1)总是在当前剩下的n-i+1个待排序数据元素中选出关键字最小的数据元素,作为有序数据元素序列的第i个数据元素。等到第n-1趟选择结束,待排序数据元素仅剩下一个时就不用再选了,按选出的先后次序所得到的数据元素序列即为有序序列,排序即告完成。 ??4归并排序(两路归并排序) ?? ??两路归并排序的基本思想是:假设初始排序表有n个数据元素,首先把它看成是长度为1的首尾相接的n个有序子表(以后称它们为归并项),先做两两归并,得n/2上取整个长度为2的归并项(如果n为奇数,则最后一个归并项的长度为1);再做两两归并,……,如此重复,最后得到一个长度为n的有序序列。 ?? ?? ??程序的主要流程图 ?? ??程序的主要模块(要求对主要流程图中出现的模块进行说明) ??程序的主要模块主要分为主菜单模块和排序算法演示模块。 ?? ??1主菜单 ??主要功能:程序运行时,可使运行者根据提醒输入相关操作,从而进入不同的排序方法或者退出。 ??2排序方法及输出 ?? ??根据运行者对排序的不同选择,进入排序过程 ??a.直接插入排序:根据直接排序的算法,输出排序过程 ??b.折半插入排序:根据折半插入的算法,输出排序过程 ??c.冒泡排序:根据冒泡排序算法,输出排序过程 ??d.简单选择排序:根据简单选择排序的算法,输出排序过程 ??e.快速排序:根据快速排序的算法,输出排序过程 ??f.堆排序:根据堆排序的算法,输出排序过程 ??g.归并排序:根据归并排序的算法,输出排序过程 ?? ??程序的主要函数及其伪代码说明 ??1模板类 ??主要说明程序中用到的类的定义 ??templateclass typeclass sortlist ??{ ??private: ??int currentsize;//数据表中数据元素的个数 ??public: ??type *arr;//存储数据元素的向量(排序表) ??sortlist():currentsize(0){arr=new type[maxsize];}//构造函数 ??sortlist(int n){arr=new type[maxsize];currentsize=n;} ??void insert(int i,type x){arr[i]=x;} ??~sortlist(){delete []arr;}//析构函数 ??void swap(type x,type y)//数据元素x和y交换位置 ??{type temp=x;x=y;y=temp;} ??void bubblesort();//冒泡排序 ??void quicksort(int low,int high);//快速排序 ??void insertionsort();//直接插入排序 ??void binaryinsertsort();//折半插入排序 ??void selectsort();//简单选择排序 ??void heapsort()

您可能关注的文档

文档评论(0)

cai + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档