m0_37764827 2017-03-05 11:30 采纳率: 0%
浏览 885

一个简单的合并排序,可就是运行不对,着急,在线等!

 #include<iostream>
using namespace std;
template <class T>
void MergeSort(T a[],int left,int right);
template <class T>
void Merge(T a[],T b[],int left,int middle,int right);
template<class T>
void Copy(T a[],T b[],int left,int right);

template<class T>
void MergeSort(T a[],int left,int right)
{
    if(right>left){
        int middle=(left+right)/2;
        T b[right-left+1];
        MergeSort(a,left,middle);
        MergeSort(a,middle+1,right);
        Merge(a,b,left,middle,right);
        Copy(a,b,left,right);
    }
}

template <class T>
void Merge(T a[],T b[],int left,int middle,int right)
{
    int k=0,i=0,j=middle;
    while(i<middle&&j<right){
        if(a[i]<a[j]){
            b[k++]=a[i++];
        }
        else{
            b[k++]=a[j++];
        }
    }
    if(i<middle){
        while(i<middle)
        b[k++]=a[i++];
    }
    if(j<right){
        while(j<right)
        b[k++]=a[j++];
    }
}

template<class T>
void Copy(T a[],T b[],int left,int right){
    int i=0,temp=left-1;
    while(i<=right-left){
        a[temp++]=b[i++];
    }
}

int main()
{
    int a[]={10,8,7,5,4,3,2,1};
    MergeSort(a,1,8) ;
    for(int i=0;i<8;i++){
        cout<<a[i]<<"  "<<endl;
    }
    return 0;
}
  • 写回答

1条回答 默认 最新

  • dabocaiqq 2017-03-05 11:36
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 github符合条件20分钟秒到账,github空投 提供github账号可兑换💰感兴趣的可以找我交流一下
  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?