Chinaunix首页 | 论坛 | 博客
  • 博客访问: 20317
  • 博文数量: 17
  • 博客积分: 730
  • 博客等级: 军士长
  • 技术积分: 175
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-24 12:09
文章分类

全部博文(17)

文章存档

2010年(17)

我的朋友
最近访客

分类: C/C++

2010-01-24 13:33:23

#include
#include

void Msort(int *a,int n);
void Scp(int *a,int *b,int num,int n);
void sortp(int *a,int *b,int beg,int mid,int end);
int main(){
    int a[10];
    int i=10,j=0;
    for(j=0;j<10;++j)
         a[j]=11-j;
    
    Msort(a,10);
    for(j=0;j<10;++j)
       printf("%d,",a[j]);
    system("pause");
       
}
void Msort(int *a,int n){
     int *b=(int *)malloc(n*sizeof(int));
     int s=1;
     while(s
        Scp(a,b,s,n);
        s+=s;
        Scp(b,a,s,n);
        s+=s;
     }

}
void Scp(int *a,int *b,int num,int n){
     int test=0;
     while(test <= n){
         sortp(a,b,test,test+num,test+2*num);
         test+=2*num;
     }
     test-=2*num;
     if(test+num
         sortp(a,b,test,test+num,n);
     else{
          for(;test
             b[test]=a[test];
     }
}
void sortp(int *a,int *b,int beg,int mid,int end){
     int i,j,k,q;
     i=beg;
     j=mid;
     k=beg;
     while(i
         if(a[i]
             b[k++]=a[i++];
         else
             b[k++]=a[j++];
     }
     if(i>=mid){
         for(q=j;q
             b[k++]=a[q];
     }
     else{
       for(q=i;q
             b[k++]=a[q];
     }
}
             
                 

阅读(248) | 评论(0) | 转发(0) |
0

上一篇:$home/.dmrc已被忽略 问题

下一篇:二分法

给主人留下些什么吧!~~