- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
chapter2 Sorting算法与算法的分析技术精品
定理2.11 任何n元比较排序算法在平均情形下的比较次数至少为log(n!),即 A(n)≥log(n!)≈nlogn – 1.443n 证明:因任一n元比较排序算法的判定树的叶结点数l≤n!,且 所以 2.6 排序算法的有关研究 比较排序算法的改进与分析 基数排序(Radix Sorting) 例如当元素关键字有三位十进制整数组成时,算法如Fig.2.17所示。 外部排序算法 粗排序(Roughly Sorting) 并行排序(Parallel Sorting) 第二章完 算法 2.1 选择排序算法 SelectSort template class Key void SelectSort ( Key L[ ], int n ){ int i, j, k ; for ( i = 1 ; i n ; i + + ){ for ( j = i + 1 , k = i ; j = n ; j + + ) if ( L[k] L[j] ) k = j ; Swap ( L[i] , L[k] ) ; } return ; } 返回 算法 2.2 插入排序算法 InsertSort template class Key void InsertSort ( Key L[ ] , int n ){ int i , j ; Key temp ; for ( i = 2 ; i = n ; i + + ){ for ( j = i-1 , temp = L[i] ; j 0 ; j - - ){ if ( L[j] temp ) L[j+1] = L[j] ; else { L[j+1] = temp ; break ; } } } return ; } 返回 算法 2.3 起泡排序算法 BubbleSort template class Key void BubbleSort ( Key L[ ] , int n ){ int i , j ; for ( i = 1 ; i n ; i + + ){ for ( j = n ; j i ; j - - ) if ( L[j] L[j-1] ) Swap( L[j] , L[j-1] ) ; } return ; } 返回 算法 2.4 起泡排序的改进算法 BSort template class Key void BSort ( Key L[ ] , int n ){ int p = 1 ; int i , j ; for ( i = 1 ; ( i n )p ; i + + ) for ( j = n ; j i ; j - - ){ p = 0; if ( L[j] L[j-1] ) { p = 1 ; Swap( L[j] , L[j-1] ) ; } } } return ; } 返回 算法 2.5 希尔排序算法 ShellSort template class Key void ShellSort ( Key L[ ] , int n , int t , int h[ ] ){ for ( int h = h[t] , s = t ; s = 1 ; s - - , h = h[s] ) for ( int k = 1 ; k = h ; k + + ) for ( int i = h + k ; i = n ; i + = h ){ Key temp = L[i] ; int j = i – h ; while ( ( L[j] temp )( j 0) ){ L[j+h] = L[j] ; j - = h ; } L[j+h] = temp ; } return ; } 返回 算法 2.6 快速排序算法 QuickSort template class Key void QuickSort ( Key L[] , int first , int last ){ if ( first last
文档评论(0)