- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
else { table.Arr[pq].setLink ( table.Arr[q].getLink()); table.Arr[q].setLink ( table.Arr[0].getLink()); table.Arr[0].setLink ( q ); } p = h ; //准备下一次选择 } } 与在顺序表上的直接插入排序一样。在链表上进行直接选择排序,关键字比较次数与数据元素的初始排列无关,总的关键字比较次数为: 比较次数=(n-1)+(n-2)+…+1=n(n-1)/2 在链表上进行直接选择排序不需要进行数据元素的移动,每一趟选出数据元素后只需将其插入到有序表的第一个数据元素之前。可见在链表上进行直接选择排序总的时间复杂度也为O(n2)。 链表上的直接选择排序也是一种不稳定的排序方法。 锦标赛排序 锦标赛排序的算法思想与体育比赛类似。 首先将n个数据元素两两分组,分别按关键字进行比较,得到n/2个比较的优胜者(关键字小者),作为第一步比较的结果保留下来, 然后对这n/2个数据元素再两两分组,分别按关键字进行比较,…,如此重复,直到选出一个关键字最小的数据元素为止。 锦标赛排序示例: 锦标赛排序构成的树是完全二叉树,其高度为?Log2n?+1,其中n为排序表中数据元素个数。 因此,除第一次选出具有最小关键字的数据元素需要进行n-1次关键字比较外,重构优胜者树,选出具有次小、再次小、…关键字的数据元素所需的关键字比较次数均为0(Log2n)。 所以,总的关键字比较次数为0(nLog2n)。数据元素的移动次数与关键字的比较次数相当,所以锦标赛排序总的时间复杂度为0(nlog2n)。 锦标赛排序也是一种不稳定的排序方法。 堆排序 堆排序的算法基本思想是: (1)对排序表中的数据元素,利用堆的调整算法形成初始堆。 (2)输出堆顶元素。 (3)对剩余元素重新调整形成堆。 (4)重复执行第(2)、(3)步,直到所有数据元素被输出。 堆排序的示例 建立最大堆的调整算法: template class Type void MinHeapType :: FilterDown ( const int start , const int EndOfHeap) { //向下调整使从start开始到EndOfHeap为止的子表成为最大堆 int i = start, j = 2*i+1; // j为i的左孩子 Type temp = heapArr[i]; while ( j = EndOfHeap ) { if ( j EndOfHeap table.Arr[j].getkey() table.Arr[j+1].getkey()) j++; //在两个孩子中选关键字较小者 if ( temp.getkey() = table.Arr[j].getkey()) break; else { table.Arr[i] = table.Arr[j]; i = j; j = 2*j+1; } } table.Arr[i] = temp; } 堆排序算法的C++描述如下: template class Type void HeapSort (sortlist Type table ) { for ( int i = (table.CurrentSize-2 ) / 2; i = 0; i-- ) FilterDown ( i, table.CurrentSize-1 ); //初始建堆 for ( i = table.CurrentSize-1; i = 1; i--) { Swap(table.Arr[0],table.Arr[i]); FilterDown ( 0, i-1 ); //重建最大堆 } } 堆排序算法的时间复杂性可用关键字的比较次数来测度。 若设堆中有n个结点,且2k-1?n?2k,则对应的完全二叉树有k层。 在第一个形成初始堆的for循环中对每一个非叶结点调用了一次堆调整算法Fi
您可能关注的文档
- 走进物流 作者 毛宁莉 项目一 走近物流.ppt
- 组态软件WINCC及其应用 作者 刘华波 第2章 开始项目.ppt
- 组态软件WINCC及其应用 作者 刘华波 第5章 全局脚本.ppt
- 组态软件WINCC及其应用 作者 刘华波 第6章 报警记录.ppt
- 组态软件WINCC及其应用 作者 刘华波 第8章 报表系统.ppt
- 组态软件WINCC及其应用 作者 刘华波 第9章 多语言项目.ppt
- 组态软件WINCC及其应用 作者 刘华波 第10章 WinCC的开放性.ppt
- 组态软件WINCC及其应用 作者 刘华波 第13章 WinCC的选件.ppt
- 组态软件WINCC及其应用 作者 刘华波 第14章 诊断功能.ppt
- 组织行为学 作者 刘怫翔 1 第一章 导论 组织行为学.ppt
- 数据结构——C++实现 作者 缪淮扣 顾训穰 沈俊 数据结构-第六章.ppt
- 数据结构——C++实现 作者 缪淮扣 顾训穰 沈俊 数据结构-第五章.ppt
- 数据结构——C语言描述 作者 王国钧 主编 唐国民 苏晓萍 马瑜 副主编 DS01-概论.ppt
- 数据结构——C语言描述 作者 王国钧 主编 唐国民 苏晓萍 马瑜 副主编 DS02-线性表.ppt
- 数据结构——C语言描述 作者 王国钧 主编 唐国民 苏晓萍 马瑜 副主编 DS05-数组和广义表.ppt
- 数据结构——C语言描述 作者 王国钧 主编 唐国民 苏晓萍 马瑜 副主编 DS06-树.ppt
- 数据结构——C语言描述 作者 王国钧 主编 唐国民 苏晓萍 马瑜 副主编 DS07-图.ppt
- 数据结构——C语言描述 作者 王国钧 主编 唐国民 苏晓萍 马瑜 副主编 DS08-查找.ppt
- 数据结构——C语言描述 作者 王国钧 主编 唐国民 苏晓萍 马瑜 副主编 DS09-排序.ppt
- 数据库案例教程Visual_FoxPro_6.0 作者 王咏丽 第八单元 表单设计.ppt
文档评论(0)