数据结构课程设计--内部排序演示.docVIP

  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文档。上传文档
查看更多
数据结构课程设计--内部排序演示

课程设计题目:内部排序演示 1.问题描述----------------------------------------------------1 2.需求分析----------------------------------------------------1 3.数据结构设计----------------------------------------------1 4.算法设计-----------------------------------------------------1 1)概要设计-------------------------------------------------1 2)详细设计-------------------------------------------------2 5.测试分析-----------------------------------------------------7 6.总结-----------------------------------------------------------8 7.参考文献---------------------------------------------------9 8.附录:带注释的源程序-----------------------------------10 1.问题描述:随着计算机技术的发展,各种排序算法不断的被提出。排序算法在计算机科学中有非常重要的意义,且应用很广泛。在以后的发展中排序对我们的学习和生活的影响会逐渐增大,很有必要学习排序知识。此次课程设计就是运用自己掌握排序的知识, 设计一个测试程序比较几种排序算法的关键字比较次数和移动次数以取得直观感受。 2.需求分析:(1)实现各种内部排序。包括直接插入排序,希尔排序,冒泡排序,快速排序,直接选择排序,归并排序,堆排序。 (2)待排序的元素的关键字为整数或(字符)。可用随机数据和用户输入数据作测试比较。比较的指标为有关键字参加的比较次数和关键字的移动次数(关键字交换以3次计)。 (3)演示程序以人机对话的形式进行。每次测试完毕显示各种比较指标值的列表,以便比较各种排序的优劣。 3.数据结构设计 struct count { int compare ; int move ; }; 4.算法设计 1)概要设计 主程序: int main() { 初始化; while() { 接受命令; 处理命令; 退出; } 2)详细设计 (1)冒泡排序 核心思想:设排序表中有n个数据元素。首先对排序表中第一,二个数据元素的关键字array[0]和array[1]进行比较。如果前者大于后者,则进行交换;然后对第二,三个数据做同样的处理;重复此过程直到处理完最后两个相邻的数据元素。我们称之为一趟冒泡,它将关键字最大的元素移到排序表的最后一个位置,其他数据元素一般也都向排序的最终位置移动。然后进行第二趟排序,对排序表中前n-1个元素进行与上述同样的操作,其结果使整个排序表中关键字次大的数据元素被移到arr[n-2]的位置。如此最多做n-1趟冒泡就能把所有数据元素排好序。 核心代码:int array_size=0; void BubleSort(int array[], int length) { BubleSortCpare = 0 ; BubleSortCount.move = 0 ; int tmp; for(int j = length; j1; j--) for(int i =1;ij; i++) { BubleSortCpare++ ; if(array[i-1]array[i]) { tmp = array[i-1] ; array[i-1] = array[i]; array[i] = tmp ; BubleSortCount.move++ ; } } } (2)直接插入排序 开始时把第一个数据元素作为初始的有序序列,然后从第二个数据元素开始依次把数据元素按关键字大小插入到已排序的部分排序表的适当位置。当插入第i(1i=n)个数据元素时,前面的i-1个数据元素已经排好序,这时,用第i个数据元素的关键字与前面的i-1个数据元素的关键字顺序进行比较,找到插入位置后就将第i个数据元素插入。如此进行n-1次插入,就完成了排序。 核心代码:void InsertSort(int array[], int length) { InsertSortCpare = 0 ; InsertSortCount.move = 0 ; int tmp ; for(i

文档评论(0)

189****6472 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档