算法
归并排序运用的是分治递归的思想
1.将待排序元素拆分成左子序列和右子序列
2.重复操作1直到分为n个单独的元素为止一共可以分logn层
3.对每一层进行归并排序
归并算法:
1.创建一个临时数组存放归并之后的元素:temp
2.设置三个指针分别指向左子序列的起始元素,右子序列的起始元素,临时数组:p1,p2,temp_index
3.比较p1,p2指向的内容较小的存进临时数组,p++
4.重复操作3直到p1或p2指向的子序列遍历完
5.将未遍历完的子序列按顺序存进临时数组
6.将临时数组中的元素写回待排序数组的对应位置
7.重复操作2,3,4,5,6直到所有的子序列都归并完成
图解
代码
void Merge(int* arr,int low,int mid,int high)
{
//1.创建一个数组存储排序之后的合并元素
int* temp = new int[high-low&#