描述
给定n个整数,请使用归并排序算法对其进行从小到大排序。
部分代码已经给定,提交时请勿包含给定代码。
void mergeSort(int a[], int start, int end)
{
if(start >= end)
return;
int mid = (end + start)/2;
mergeSort(a, start, mid);
mergeSort(a, mid+1, end);
merge(a, start, mid, end);
}
int main()
{
int a[100000], n, i;
scanf("%d", &n);
for(i=0;i
#include<stdio.h>
#include<stdlib.h>
void merge(int a[], int start,int mid,int end)
{
int *b=(int*)malloc(sizeof(int)*(end-start+1));
int i=start,j=mid+1,k=0;
while(i<=mid&&j<=end)
{
if(a[i]<a[j])
b[k++]=a[i++];
else
b[k++]=a[j++];
}
while(i<=mid)
b[k++]=a[i++];
while(j<=end)
b[k++]=a[j++];
for(i=0;i<k;i++)
{
a[start+i]=b[i];
}
}