归并排序
本文最后更新于: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 协议 ,转载请注明出处!
