1. 什么是归并排序
比如我们拿到一个数组,如果想使用归并排序,应该怎么做呢?首先我们将数组从中间切分,分成左右两个部分,然后对左半部分和右半部分进行排序,两边部分又可以继续拆分,直至子数组中只剩下一个数据位置。然后就要将拆分的子数组进行合并,合并的时候会涉及到两个数据进行比较,然后按照大小进行排序,以此往上进行合并。// 堆代码 duidaima.com public class Solution { public static void main(String[] args) { int[] arr = {1,4,3,2,11}; sortArray(arr); System.out.println(arr); } public static int[] sortArray(int[] nums) { quickSort(nums, 0, nums.length - 1); return nums; } private static void quickSort(int[] nums, int left, int right) { if (left >= right) { return; } int partitionIndex = getPartitionIndex(nums, left, right); quickSort(nums, left, partitionIndex - 1); quickSort(nums, partitionIndex + 1, right); } private static int getPartitionIndex(int[] nums, int left, int right) { int pivot = left; int index = pivot + 1; for (int i = index; i <= right; i++) { if (nums[i] < nums[pivot]) { swap(nums, i, index); index++; } } swap(nums, pivot, index - 1); return index - 1; } private static void swap(int[] nums, int i, int j) { int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; } }总结