- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
快排及二分查找(插入) 快排 快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 快排 设要排序的数组是A[0]……A[N-1],首先任意选取一个数据k(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。 快排 假设用户输入了如下数组 创建变量i=0(指向第一个数据), j=5(指向最后一个数据), k=6(赋值为第一个数据的值)。 快排 我们要把所有比k小的数移动到k的左面,所以我们可以开始寻找比6小的数,从j开始,从右往左找,不断递减变量j的值,我们找到第一个下标3的数据比6小,于是把数据3移到下标0的位置,把下标0的数据6移到下标3,完成第一次比较: 快排 接着,开始第二次比较,这次要变成找比k大的了,而且要从前往后找了。递加变量i,发现下标2的数据是第一个比k大的,于是用下标2的数据7和j指向的下标3的数据的6做交换,数据状态变成下表: 快排 在本例中,我们进行一次循环,就发现i和j“碰头”了:他们都指向了下标2。于是,第一遍比较结束。得到结果如下,凡是k(=6)左边的数都比它小,凡是k右边的数都比它大: 快排 如果i和j没有碰头的话,就递加i找大的,还没有,就再递减j找小的,如此反复,不断循环。注意判断和寻找是同时进行的。 然后,对k两边的数据,再分组分别进行上述的过程,直到不能再分组为止。 注意:第一遍快速排序不会直接得到最终结果,只会把比k大和比k小的数分到k的两边。为了得到最后结果,需要再次对下标2两边的数组分别执行此步骤,然后再分解数组,直到数组不能再分解为止(只有一个数据),才能得到正确结果。 二分查找 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。 二分查找法的算法要求 必须采用顺序存储结构 必须按关键字大小有序排列。 二分查找的源代码 二分插入 上面已经学习了二分查找法,我们在回顾一下插入排序法。在插入排序法中,我们每次向有序数列中插入一个数,使之在合适的位置,并使得数列有序。 我们在学习了二分查找法后,可以用二分查找的这种办法来快速找到合适的位置,这也是我们算法的一种—分治法。 二分插入 同学们想一下,怎么才能用二分法找到数据的插入位置呢? 二分插入 找到的合适位置应该就是LOW的下标,找到后就需要在这个位置插入这个数据。如何插入呢? 例:合并果子(NOIP2004) 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输出这个最小的体力耗费值。例如有3种果子,数目依次为1,2,9。可以先将 1、2堆合并,新堆数目为3,耗费体力为3。接着,将新堆与原先的第三堆合并,又得到新的堆,数目为12,耗费体力为 12。所以多多总共耗费体力=3+12=15。可以证明15为最小的体力耗费值。 例:合并果子(NOIP2004) 【输入文件】输入文件fruit.in包括两行,第一行是一个整数n(1 = n = 10000),表示果子的种类数。第二行包含n个整数,用空格分隔,第i个整数ai(1 = ai = 20000)是第i种果子的数目。【输出文件】输出文件fruit.out包括一行,这一行只包含一个整数,也就是最小的体力耗费值。输入数据保证这个值小于231。【样例输入】31 2 9【样例输出】15 * * 9 8
您可能关注的文档
- 小学语文活美课堂教学的实践与思考.doc
- 小学英语新版人教版(PEP)五年级上册Unit4_What_Can_You_Do_PartA_let's_learn课件.ppt
- 小学语文一年级上册《汉语拼音复习》课件2.ppt
- 小学语文二年级日月潭课件2.ppt
- 少年闰土_313078.doc
- 少年闰土(第二课时).ppt
- 小学教师简笔画培训.ppt
- 少阳中学八年级上学期期末数学测试复习卷.doc
- 少年闰土课件_第一课时.ppt
- 小数除以整数例1_124109.ppt
- 2023年海南省海口市龙华区农业农村局公务员考试《行政职业能力测验》历年真题及详解.docx
- 2023年海南省海口市琼山区政府办公务员考试《行政职业能力测验》历年真题及详解.docx
- 2023年海南省陵水黎族自治县残联公务员考试《行政职业能力测验》历年真题及详解.docx
- 2023年海南省保亭黎族苗族自治县城市管理和综合执法局公务员考试《行政职业能力测验》历年真题及详解.docx
- 2023年海南省海口市琼山区自然资源局公务员考试《行政职业能力测验》历年真题及详解.docx
- 2023年海南省保亭黎族苗族自治县市场监督管理局公务员考试《行政职业能力测验》历年真题及详解.docx
- 2023年海南省澄迈县应急管理局公务员考试《行政职业能力测验》历年真题及详解.docx
- 2023年海南省儋州市文化旅游广电体育局公务员考试《行政职业能力测验》历年真题及详解.docx
- 2025年芜湖职业技术学院单招职业技能考试题库及答案.docx
- 2025年湘西民族职业技术学院单招职业技能考试题库及答案.docx
文档评论(0)