1. 归并排序
1.1 什么是归并排序
1. 归并排序(Merge sort)
2. 函数命名 mergeSort
3. 是建立在归并操作上的一种有效的排序算法.
1. 采用分治法
2. 还有采用这种方法的还有:快速排序
1. 申请两个空间
2. 不断迭代往下分
3. 指定两个指针,最初位置分别为两个已经排序序列的起始位置;
4. 比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置;
5. 重复步骤 3 直到某一指针达到序列尾;
6. 将另一序列剩下的所有元素直接复制到合并序列尾。
1. 和选择排序一样,归并排序的性能不受输入数据的影响
2. 但表现比选择排序好的多
3. 因为始终都是 O(nlogn) 的时间复杂度
4. 代价是需要额外的内存空间。
1.2 图例
![在这里插入图片描述](https://img-blog.csdnimg.cn/5b218af9beec4be09157a4a0afffa1ff.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATm9CdWcg44Wk,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
1.3 Java代码
public int[] mergeSort(int[] arrs) {
int n = arrs.length;
int mid = n / 2;
int[] left = new int[mid];
int[] right = new int[n - mid];
if (n <<