目录
归并排序——有递归的:
基本思想:
思路分析:
代码分析:
划分区间思路:
代码思路分析:
归并排序——有递归的:
基本思想:
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。
将已有序的子序列合并,得到完全有序的序列;即先使 每个子序列内部 有序,再使每个子序列段 间 有序。若将两个有序表合并成一个有序表,称为二路归并。
思路分析:
而放到排序中,我们归并的前提是要左右区间有序,而对于一个无序的数组而言左右区间并不是有序的,而要将他变得有序,则可以采取递归的方法。
- 那么,做法便成为了使用递归的方法,将序列区间连续的对半划分,直到不能划分位置,随后这些被划分的区间再进行排序组成一个有序的序列区间,随后再归并回去。
- 而再这些被划分区间组成一个有序的序列区间其实也会用到归并的思想
- 所以本质上就是大区间变成了小区间,数个小区间排列层有序的区间后和另一个相同等级的序列区间再度进行排序,直到变成有序的数组为止。
代码分析:
代码就是将大区间变小区间,然后小区间的元素进行尾插到新数组内排序,而后新数组的元素拷贝到原来的小区间内
然后小区间在和它同级的小区间进行相同的操作变成一个更大的有序的区间,然后再和其他更大的区间进行相同的操作,最后的最后变成一个有序的数组并拷贝回原来的数组空间
划分区间思路:
代码思路分析: