- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
10.2 插入排序 49 38 65 97 76 13 27 49 55 4 2、排序过程: 49 38 65 97 76 13 27 49 一趟排序: 38 49 65 76 13 27 49 97 二趟排序: 38 49 65 13 27 49 76 97 三趟排序: 38 49 13 27 49 65 76 97 四趟排序: 38 13 27 49 49 65 76 97 五趟排序: 13 27 38 49 49 65 76 97 3、算法:一趟快速排序算法的实现 10.4 选择排序 三、堆排序Heap Sort(改进了的树型排序) 第二步:输出并调整重建堆 5、算法:向下过滤的实现(极大堆) void HeapAdjust(HeapType H,int s,int m) { rc=H.r[s]; for(j=2*s;j=m;j*=2) { if(jmH.r[j].keyH.r[j+1].key) j++; if(rc.key=H.r[j].key) break; H.r[s]=H.r[j]; s=j; } H.r[s]=rc; } 10.5 归并排序(Merge Sort) 278 109 063 930 589 184 505 269 008 083 第一遍:按个位数放入10个队列 第二遍:再将所得数列按十位依次入队列 第三遍:再将所得数列按百位依次入队列 10.7 内部排序方法的比较 void Msort(RcdType SR[],RcdType TR1[], int s, int t) { if(s==t) TR1[s]=SR[s]; else{ m=(s+t)/2; Msort(SR,TR2,S,m); Msort(SR,TR2,m+1,t); Merge(TR2,TR1,s,m,t); } } void MergeSort(Sqlist L) { Msort(L. r,L.r,1,L.length); } 4、算法分析: 2-路归并排序的递归算法从程序的书写形式上看比较简单,但是在算法执行时,需要占需要一个与表等长的辅助元素数组空间,所以空间复杂度为O(n)。即除了在递归调用时需要保存一些必要的信息,在归并过程中还需要与存放原始记录序列同样数量的存储空间,以便存放归并结果,但与快速排序及堆排序相比,它是一种稳定的排序方法。时间复杂性O(nlog2n)。 0 1 2 3 4 5 6 7 8 9 278 0 1 2 3 4 5 6 7 8 9 109 0 1 2 3 4 5 6 7 8 9 063 0 1 2 3 4 5 6 7 8 9 930 0 1 2 3 4 5 6 7 8 9 589 0 1 2 3 4 5 6 7 8 9 184 0 1 2 3 4 5 6 7 8 9 505 0 1 2 3 4 5 6 7 8 9 269 0 1 2 3 4 5 6 7 8 9 008 0 1 2 3 4 5
文档评论(0)