一分钟了解插入排序

在这里插入图片描述

void msort(int s,int t)
{
    if(s==t) return;                 //如果只有一个数字则返回,无须排序
    int mid=(s+t)/2;  
    msort(s,mid);                  //分解左序列
    msort(mid+1,t);               //分解右序列
    int i=s, j=mid+1, k=s;      //接下来合并
    while(i<=mid && j<=t)
    {
          if(a[i]<=a[j])  
          {
                r[k]=a[i]; k++; i++;
           }else{
                        r[k]=a[j]; k++; j++;
                    }
      }  
      while(i<=mid)               //复制左边子序列剩余
      {
           r[k]=a[i]; k++; i++;
       }
       while(j<=t)                    //复制右边子序列剩余  
       {
            r[k]=a[j]; k++; j++;
        }
        for(int i=s; i<=t; i++) a[i]=r[i];  
        return 0;
} 
发布了79 篇原创文章 · 获赞 79 · 访问量 2143

猜你喜欢

转载自blog.csdn.net/dgyshy/article/details/104881376