作业比赛编号 : 100000586 - 《算法笔记》4.6小节——算法初步->two pointers B基础排序III:归并排序

作业比赛编号 : 100000586 - 《算法笔记》4.6小节——算法初步->two pointers B基础排序III:归并排序

(问题A平台有问题,无人做对)

#include<stdio.h>
void merge(int a[],int l1,int r1,int l2,int r2)
{
    int i=l1;
    int j=l2;
    int b[r2-l1+1];
    int index=0;
    while(i<=r1&&j<=r2){
        if(a[i]<a[j])
            b[index++]=a[i++];
        else b[index++]=a[j++];
    }
    while(i<=r1)
        b[index++]=a[i++];
    while(j<r2)
        b[index++]=a[j++];
    for(int k=0;k<index;k++)
        a[l1+k]=b[k];
}
  
void mergeSort(int a[],int left,int right)
{
    if(left<right)
    {
        int mid=(left+right)/2;
        mergeSort(a,left,mid);
        mergeSort(a,mid+1,right);
        merge(a,left,mid,mid+1,right);
    }
}
int main()
{
    int n,m;
    while(scanf("%d",&n)!=EOF)
    {for(int i=0;i<n;i++)
     
    {
        scanf("%d",&m);
        int a[m];
        for(int i=0;i<m;i++)
        {
            scanf("%d",&a[i]);
        }
        mergeSort(a,0,m-1);
        for(int i=0;i<m;i++)
            printf("%d\n",a[i]);
    }
         
    }
      
    return 0;
}
/**************************************************************
    Problem: 3105
    User: **********
    Language: C++
    Result: 正确
    Time:58 ms
    Memory:1852 kb
****************************************************************/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值