MergeSort
归并排序 - 分治为子数组进行比较,然后归并。
归并排序的思想
归并,即将两个有序的数组归并成一个更大的有序数组。归并排序算法:要将一个数组排序,可以先递归的将它们分成两半进行排序,然后再将结果合并起来。合并时需要额外的空间进行操作。
原地归并排序
将原数组递归分治为两个子数组进行比较,使用一个辅助数组进行归并。
在归并时,左半边用尽,取右半边元素;右半边用尽,取左半边元素;右半边当前元素小于左半边当前元素,取右半边元素,以及右半边当前元素大于左半边元素,取左半边元素。
Java
实现
1 | import java.util.Arrays; |
Python
实现
1 | def sort(nums): |
另一种实现方式(个人感觉更简洁):
1 | def sort(nums): |
自顶向下的归并排序
1 | import java.util.Arrays; |
自底向上的归并排序
1 | import java.util.Arrays; |