#include<iostream>
using namespace std;
/*合并有序数组,first-mid和mid-last。num为两个数组的总长度*/
void Merge_Array(int a[],int first,int mid,int last)
{
int num = last - first +1;
int* temp = new int[num];
int i,j,k;
i=first;
j=mid+1;
k = 0;
while(i<=mid && j <=last)
{
if(a[i] > a[j])
temp[k++] = a[j++];
else
temp[k++] = a[i++];
}
while(i<=mid)
temp[k++] = a[i++];
while(j<=last)
temp[k++] = a[j++];
for(i=first;i<first+k;i++)
{
a[i] = temp[i-first];
}
delete[]temp;
}
void Merge_Sort(int a[],int p,int q)
{
if(p < q)
{
int mid = (p+q)/2;
Merge_Sort(a,p,mid);
Merge_Sort(a,mid+1,q);
Merge_Array(a,p,mid,q);
}
}
void main()
{
int a[] = {57,68,59,52,72,28,96,33,24};
int count = sizeof(a) / sizeof(a[0]);
Merge_Sort(a,0,count-1);
for(int i=0;i<count;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
[Sort]归并排序
最新推荐文章于 2020-04-30 21:46:05 发布
归并排序是一种分治算法,通过将两个已排序的子序列合并成一个有序序列,达到整个序列排序的目的。本文详细介绍了归并排序的原理、步骤,并提供了Python实现示例,适合初学者学习和理解。
摘要由CSDN通过智能技术生成