递归合并排序
算法思想:将待排序的集合一分为二,直到排序集合就剩下一个元素为止,然后不断的合并两个排好序的数组。
#include<iostream>
#include<cstdlib>
#include<random>
#include<sys/timeb.h>
#include<ctime>
#define N 200000
using namespace std;
int merge(int a[],int low,int mid,int high){ //对排好序的两个分组进行合并
int i=low,j=mid+1,p=0;
int *temp=(int *)malloc(sizeof(int)); //开辟临时数组存合并后的元素。
if(temp == NULL){
return -1;
}
while(i<=mid && j<=high){
temp[p++]=((a[i]<=a[j])?a[i++]:a[j++]);
}
while(i<=mid){
temp[p++]=a[i++];
}
while(j<=high){
temp[p++]=a[j++];
}