前言
归并排序算法咋一看和快排很像,也是采用经典的分治策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)阶段就是将分的阶段得到的各答案“修补”在一起,即分而治之)。但是它的处理顺序与快排还是有些不同的。
概念
主要过程就是先将一个数组不停二等分到最小单位,再将其逐一排序再组合成一个完整的有序数组。
示意图
总体示意图:
“治”阶段(即将2个排好的数组拼成一个大的有序数组)
核心算法流程图
#核心算法代码
//分+合方法
public static void mergeSort(int[] arr, int left, int right, int[] temp) {
if(left < right) {
int mid = (left + right) / 2; //中间索引
//向左递归进行分解
mergeSort(arr, left, mid, temp)