- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件技术基础11--检索与排序概要
作业 设顺序表有20个元素,使用折半检索算法,请依次写出被检索的元素数组下标。 有冲突的哈希检索效率与元素放入的顺序有关。假设甲乙丙丁戊己庚辛壬癸十个字按哈希算法放入数组A[10],具体方法为每个字将拼音声母序号+声调的结果除以10,取模(a的字母序号为1), 如: jia=(10+3) %10=3;ding=(4+1)%10=5 冲突的解决方法为线性探查法。请分别计算按递增序输入和按递减序输入两种情况下的检索效率。 设数列为:33, 24,15,56,29,30,11,29,42,请分别使用简单插入、冒泡和快速排序算法进行排序,写出每一趟的结果。 编写一个算法,统计冒泡排序的效率,即冒泡过程中总共发生了多少次交换 * 排序 简单插入 核心算法 按序插入的算法 从已排序子表的后部逐个向前比对, 如果插入元素大于表中元素,就将表中元素后移一格,否则在表中元素后放入 while ( j -1 ){ if( temp.key table-data[ j ].key){ table-data[ j+1 ] = table-data[ j ]; } else{ table-data[ j+1 ] = temp; break; } j--; } 1 2 6 7 10 6 17 temp void insert_sort(table){ } tail = 1; while ( tail table-length){ tail = tail +1; } temp = table-data[tail]; j = tail - 1; while( j -1) if(temp.key table-data[j].key) table-data[j+1] = table-data[j]; else{ table-data[j+1] = temp; break; } j--; } 接近n(n+1)/4次搬移元素 排序 简单插入 排序 简单选择 6.3 选择插入排序算法 简单选择算法 基本思想:从无序表中依次选择出最小的元素,插入在新的排序表尾 若直接在原有的表中进行排序! 将表分为已排序子表和未排序子表。 每次从未排序子表中选出最小的元素,与未排序子表的表首元素交换,同时未排序子表表首成为排序子表表尾,当未排序子表为空时,排序完成。 3 1 4 2 已排序子表 未排序子表 排序 简单选择 算法分析 算法框架 未排序子表不断减小,已排序子表不断增大的算法框架 while(head table-length){ 核心算法:每次从未排序子表选出最小的元素,与head指向的元素交换。 head ++; } head = 0; head是两个子表的分界线 3 1 4 2 head 课堂练习:请参照前面的算法写出算法框架 排序 简单选择 核心算法 从未排序子表中选出最小的元素(逐个比较) 最小的元素和未排序子表首元素交换 3 1 4 2 head j = head; while(j table-length){ j++; } min = j; if( table-data[ j ].key table-data[min].key) min = j; table-data[head] table-data[min]; 课堂练习:请写出选择最小元素的算法 课堂练习:请写出元素交换的算法 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
文档评论(0)