归并排序
本文最后更新于:2024年3月18日 凌晨
归并排序
算法分析
- 归并排序算法就是用分治策略实现对n个元素进行排序的算法。
- 将待排序元素分成大小大致相同的两个子集合,分别对两个子集合进行排序,最终将排好序的子集合合并成所要求的排好序的集合。
代码实现
流程图
1 |
|
mergeSort(int[] nums, int left, int right)
:对nums[left:right]
进行排序。merge(int[] nums, int[] tmp, int l, int m, int r)
:合并nums[l:m]
和nums[m+1:r]
到tmp[l:r]
算法改进
- 迭代实现:首先将数组a中相邻元素两两配对,用合并算法将它们排序,构成n/2组长度为2的排好序的子数组段,然后再将它们排序成长度为4的排好序的子数组段,如此继续下去,直至整个数组排好序。
1 |
|
mergeSort(int[] nums, int n)
:对数组nums[n-1]
进行排序。mergePass(int[] x, int[] y, int s, int n)
:将数组x[n-1]
以s个元素一组,划分出n/s组,合并排序大小为s的相邻子数组,并存入数组y[n]
中。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!