#include<iostream>
using namespace std;
void merge(int a[], int start, int mid, int end)
{
int *tmp = (int *)malloc((end-start+1)*sizeof(int));
int i = start;
int j = mid + 1;
int k = 0;
while(i <= mid && j <= end)
{
if (a[i] <= a[j])
tmp[k++] = a[i++];
else
tmp[k++] = a[j++];
}
while(i <= mid)
tmp[k++] = a[i++];
while(j <= end)
tmp[k++] = a[j++];
for (i = 0; i < k; i++)
a[start + i] = tmp[i];
free(tmp);
};
void mergeSort(int a[], int start, int end)
{
if(a==NULL || 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[13] = {7,1,3,6,8,2,4,9,5,0,10,12,11};
mergeSort(a,0,12);
for(int i = 0 ; i < 13 ; i++)
{
cout<<a[i]<<' ';
}
system(
【归并排序】C++实现归并排序代码
最新推荐文章于 2025-06-28 10:28:56 发布