#include"aa.h"
#include<vector>
#include<iostream>
#include<numeric>
using namespace std;
void merge(int a[],int left,int mid,int right)
{
//const int len=sizeof(a);
int b[10];
int k;
for(k=left;k<=right;k++) //申请新数组b[]将a[]中的值拷贝进去
b[k]=a[k];
int i=left,j=mid+1;
k=left;
while(i!=mid+1 && j!=right+1)
{
if(b[i]<=b[j])
a[k++]=b[i++];
else
a[k++]=b[j++];
}
while(i<=mid)
a[k++]=b[i++];
while(j<=right)
a[k++]=b[j++];
}
void mergesort(int a[], int left, int right) //递归调用merge函数
{
if (left < right)
{
int mid = (left + right) / 2;
mergesort(a, left, mid); //左边有序
mergesort(a, mid+1,right); //右边有序
merge(a, left, mid, right); //再将二个有序数列合并
} //if
}
void MergeSort(int a[], int n) //封装mergesort函数,用户只需提供待排序数组与长度
{
mergesort(a, 0, n - 1);
}
int main()
{
int a[10]={5,3,10,7,9,2,4,11,8,1};
MergeSort(a,10);
for(int i=0;i<10;i++)
cout<<a[i]<<' ';
cout<<endl;
system("pause");
return 0;
}
归并排序
最新推荐文章于 2024-04-28 12:18:26 发布