资源简介 (共24张PPT)排序算法——归并排序信息学奥林匹克竞赛(入门)【高中】排序算法——归并排序Content归并排序算法精讲经典例题讲解排序算法——归并排序-Content排序算法——归并排序归并排序算法精讲排序算法——归并排序排序算法——归并排序排序算法——归并排序-归并排序算法精讲Example 1杠铃增重问题每位参赛运动员向组委会提交排好序的三次试举重量杠铃增重顺序:问题:组委会如何根据试举重量安排杠铃增重顺序?排序算法——归并排序-Example 1归并排序算法精讲Example 1杠铃增重问题选择排序从待排序元素中迭代选出最小值并排序比较次数:66次选择排序:依次将每个元素插入到已排列序列之中比较次数:55次问题:是否还有更高效的算法?排序算法——归并排序-Example 1归并排序算法精讲Example 1杠铃增重问题问题特点:局部有序快速合并:比较两有序数组当前最小元素,将较小者逐一合入新数组排序算法——归并排序-Example 1归并排序算法精讲Example 1杠铃增重问题问题特点:局部有序快速合并:比较两有序数组当前最小元素,将较小者逐一合入新数组后续策略:逐一合并,比较27次排序算法——归并排序-Example 1归并排序算法精讲Example 1杠铃增重问题问题特点:局部有序快速合并:比较两有序数组当前最小元素,将较小者逐一合入新数组后续策略:逐一合并,比较27次两两合并:比较24次策略名称 4位选手 8位选手 16位选手逐一合并 27次 105次 405次两两合并 24次 72次 192次求解杠铃增重问题的两两合并策略对排序问题有何启发?排序算法——归并排序-Example 1归并排序算法精讲归并排序定义:归并排序是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列。历史:1945年,冯 诺依曼提出归并排序。算法流程:将数组排序问题分解为和排序问题递归解决子问题得到两个有序的子数组将两个有序子数组合并为一个有序数组排序算法——归并排序归并排序算法精讲-归并排序归并排序分解原问题解决子问题合并问题解原问题分解为多个子问题递归求解各个子问题将结果合并为原问题解归并排序:分解数组,递归求解,合并排序排序算法——归并排序归并排序算法精讲-归并排序归并排序程序复杂度:分析方法:递归树法框架:排序算法——归并排序归并排序算法精讲-归并排序Example 2对以下数组进行排列:下面我们运用归并排序算法对此数组进行排序i 0 1 2 3 4a[i] 19 15 37 12 25排序算法——归并排序归并排序算法精讲-Example 2第一步:分解首先将数组分解成两部分,即19、15、37为一组,12、25为一组,为了区分,我们起个名字叫“第一层”,如下:19 15 3712 25排序算法——归并排序归并排序算法精讲-Example 2第二步:分解继续分解,19、15为一组,37为一组,12为一组,25为一组,这四组为“第二层”,如下:19 15253712排序算法——归并排序归并排序算法精讲-Example 2第三步:分解继续分解,此时只剩下19、15这一组可以分解,分解成19、15,这两组为“第三层”,如下:1519排序算法——归并排序归并排序算法精讲-Example 2第四步:归并由于所有组都已经分解成只有1个元素,开始进行归并,从“高层”开始归并,即先归并“第三层”,比较“第三层”两组元素,19 < 15,因此将15排在19前面,由于已经没有元素,结束此次归并,如下:19 15排序算法——归并排序归并排序算法精讲-Example 2第五步:归并继续归并,此次归并“第二层”,这一层有4个组,进行两两比较。首先,比较15、19和37:15 < 37,所以15放第一个位置,接着比较19和37,19 < 37,所以19放第二个位置,此时第一组15、19已经没有元素,于是将37填入15和19之后。接着比较:12和25:12 < 25,所以12放第一个位置,由于第一组12已经没有元素,于是将25填入12之后。归并的结果如下:15 19 3712 25排序算法——归并排序归并排序算法精讲-Example 2第六步:归并继续归并,此次归并“第一层”,这一组有2个组,第一组:15、19、37,第二组:12、25。同样的,取两组的第1个数比较:15 > 12,所以12放第1个位置;接着取第二组的第2个数比较:15 < 25,所以15放第2个位置;接着取第一组的第2个数比较:19 < 25,所以19放第3个位置;接着取第一组的第3个数比较:37 > 25,所以25放第4个位置;由于第二组已经没有元素,所以37自然归入第5个位置。此时,归并结束,最终数组如下:12 15 19 25 37排序算法——归并排序归并排序算法精讲-Example 2完整过程排序算法——归并排序归并排序算法精讲-Example 2动画演示排序算法——归并排序归并排序算法精讲-Example 2经典例题讲解排序算法——归并排序排序算法——归并排序排序算法——归并排序-经典例题讲解【NOIP1998提高组】拼数题目描述:设有n个正整数,然后将它们联接成一排,相邻数字首尾相接,组成一个最大的整数。输入格式:第一行有一个整数,表示数字个数n。第二行有n个整数,表示给出的n个整数。输出格式:一个正整数,表示最大的整数排序算法——归并排序经典例题讲解-Problem 1求第 k小的数题目描述:输入n(且n为奇数)个数字 ,输出这些数字的第k小的数。最小的数是第0小。输入格式:第一行有一个整数,表示数字个数n。第二行有n个整数,表示给出的n个整数。输出格式:一个正整数,表示第k小的数.排序算法——归并排序经典例题讲解-Problem 2Thanks For Listening!排序算法——归并排序排序算法——归并排序 展开更多...... 收起↑ 资源预览