用递归实现归并排序的完整代码

本文详细介绍了归并排序算法的实现过程,包括数组长度获取、数组复制、排序合并等关键步骤,并通过C++代码示例展示了如何进行数组的归并排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<iostream>
using namespace std;
int length(int a[])
{
    int i;
    for(i=0;a[i]!='\0';i++);
    return i;
}
void copy1(int a[],int b[],int l,int r)
{
    for(int i=l;i<=r;i++)
        a[i]=b[i];
}

//将数组排序并合并到标数组中,调用copy1函数将b数组赋值给a
void merge1(int a[],int b[],int l,int m,int r)
{
    int i=l,j=m+1,n=l;
    while((i<=m)&&(j<=r))
    {
        if(a[i]<a[j])
        {
            b[n++]=a[i++];
        }
        else
         {
            b[n++]=a[j++];
         }
    }
    if(i>m)
    {
        for(int t=j;t<=r;t++)
            b[n++]=a[t];
    }
    else
    {
        for(int t=i;t<=m;t++)
            b[n++]=a[t];
    }
    copy1(a,b,l,r);

}

//将数组分割

void mergeSort(int a[],int left,int right)
{
    int mid;
    int b[length(a)];
    if(left<right)
    {
        mid =(left+right)/2;
        mergeSort(a,left,mid);
        mergeSort(a,mid+1,right);
        merge1(a,b,left,mid,right);
    }
}
int main()
{
    int i,n;
    cout<<"请输入数组元素的个数:"<<endl;
    cin>>n;
    int *a=new int(n);
    cout<<"请输入数组元素:"<<endl;
    for( i = 0 ; i < n ; i++ )
        cin>>a[i];
    mergeSort(a,0,n-1);
    cout<<"归并排序后,数组元素输出为:";
    for(int g=0;g<n;g++)
        cout<<a[g]<<"  ";
    return 0;
}
//实验结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值