归并排序(源代码)

    很久没有做C程序了,今天数据结构试验要做个归并排序,看了看书,花了不少时间终于把它做出来了。
    不好意思,没有注释,算法网上都有,就是没有源程序。
#include<stdio.h>
void creatlist(int l[])
{
    printf(
输入十个数:");
    
for(int i = 1; i<=10; i++)
        scanf(
"%d",&l[i]);
}


void merge(int sr[], int  tr[],int i, int m, int n)
{
    
for(int j=m+1, k=i; i<=m&&j<=n; ++k)
    
{
        
if(sr[i] > sr[j]) tr[k] = sr[i++];
        
else tr[k] = sr[j++];
    }

    
if(i<= m) 
        
for( ; k<=n; k++)
            tr[k]
=sr[i++];
    
if(j<= n)
        
for( ; k<=n; k++)
            tr[k]
=sr[j++];
}


void msort(int sr[], int tr1[], int s, int t)
{
    
if(s == t) tr1[s] = sr[s];
    
else
    
{
        
int m= (s+t)/2;
        
int tr2[11];
        msort(sr,tr2,s,m);
        msort(sr,tr2,m
+1,t);
        merge(tr2,tr1,s,m,t);
    }


}



void main()
{
    
int a[11],b[11];
    creatlist(a);
    msort(a,b,
1,10);
      printf(“排序后的结果是:");
    
for(int i=1;i<=10;i++)
        printf(
"%d ",b[i]);
}


posted @ 2008-06-04 01:18  天虎蓝骑士  阅读(1712)  评论(0)    收藏  举报