分治法实现归并排序
分治法简介:
分治法从字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或者更多相同或者相似的子问题,再把子问题分成更小的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。归并排序算法也是简历在分治法的操作上实现的算法,归并排序将一个序列分成多个子序列,将所有子序列有序,再将有序的子序列合并,得到排好序的序列。
归并排序基本原理:
(1) 递归将问题分解,将序列元素大于等于3个的时候,将数组分为两个更小的数组并继续判断元素个数进行划分。
(2) 解决小规模的问题,如序列中只有一个或者两个元素的时候,将小规模问题进行排序。
(3) 依次将小规模的问题进行合并,每次得到比小规模问题大一倍的规模的有序序列。
(4) 最后规模扩大到原问题的规模时,得到的序列便是排好序的有序序列。
归并排序关键代码思想:
(1) 归并过程的实现,定义一个归并函数并且传入三个参数,传入序列,左端点下标和右端点下标。对序列进行平均划分,将两个序列中较小元素的值先进行比较存放到一个临时序列,再将未比较的值进行依次传入临时序列,最后将临时列表重新赋给传入参数列表。
(2) 分治操作实现,定义一个分治函数,传入三个参数,传入序列,左端点以及右端点下标。对序列长度进行判断,如果序列长度大于等于1时,继续进行划分,如果序列长度小于1,就停止划分,最后再实现由局部到整体的合