软技术基础--检索与排序.ppt

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
void select_sort(table){ head = 0; } while ( head table-length){ head = head +1; } j = head, min=j; while( j table-length) if(table-data[ j ].keytable-data[min].key) min = j; j++; } temp = table-data[head]; table-data[head] = table-data[min]; table-data[min] = temp; table-data[head] table-data[min]; 排序 简单选择 排序 简单插入与简单选择算法的比较 排序效率 简单插入算法搬移元素的次数较多 简单选择算法比较元素的次数较多,但搬移次数少 对于一个基本有序的表,倾向使用 算法 对于一个顺序混乱的表,倾向使用 算法 简单插入 简单选择 例:1 2 3 4 5 7 6 排序 简单插入与简单选择算法的比较 稳定性: 简单插入算法是 ? 简单选择算法是 ? 稳定的 不稳定的 算法的稳定性: 对相同排序码的元素之间相对位置的维持 保持相对位置不变--稳定算法 不一定保持相对位置--不稳定算法 1 4 2 3 3 例: 排序 冒泡排序 6.4 冒泡排序 基本思想:逐个交换次序不当的相邻表项,多趟扫描后得到排序表 3 19 2 4 13 10 交换 19 2 交换 19 4 交换 13 19 10 19 交换 排序 冒泡排序 冒泡! 最大的元素在第一趟算法中排到了(冒)表尾 次大的元素在第二趟算法中将冒到倒数第二 逐趟冒泡,我们就获得排序表 3 19 2 4 13 10 19 2 19 4 13 19 19 10 13 13 10 2 3 排序 冒泡排序 算法分析 (1)多趟扫描的框架 每一趟扫描,都将一个最大的元素排到表尾。 每一趟扫描,未排序子表减少一格 for( turn = 0 ; turn table-length -2 ; turn ++ ){ 核心算法:从前向后,每两个元素根据大小交换位置。 } for(turn = table-length-1;turn 1;turn - -){ 核心算法: } turn:未排序子表结束位置 法一 法二 排序 冒泡排序 (2)核心算法,从前向后逐个比较相邻元素的排序码,并根据大小关系交换元素位置 for( i = 0 ; i turn-1 ; i++){ if( table-data[ i ].key table-data[ i+1 ].key){ } } temp = table-data[ i ]; table-data[ i ] = table-data[ i+1 ]; table-data[ i+1 ] = temp; table-data[ i ] table-data[ i+1 ] 排序 冒泡排序 改进 不一定要进行table-length-1趟,当发现有一趟算法中没有发生交换事件,说明表中的元素已经排好序了。 void bubble_sort( table){ for(turn = table-length-1 ; turn 1 ; turn--){ for( i = 0 ; i trun - 1; i++) if( table-data[ i ].key table-data[i+1].key){ table-data[ i ] table-data[i+1]; } } } } 课堂练习:将改进加入算法中 排序 冒泡排序 改进: 加一个标志位 void bubble_sort( table){ for(turn = table-length-1 ; turn 1 ; turn--){ flag = 0; for( i = 0 ; i trun - 1; i++) if( table-data[ i ].key table-data[i+1].key){ table-data[ i ] table-data[i+1];

文档评论(0)

sunyi8246 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档