为生存而奔跑

   :: 首页 :: 联系 :: 聚合  :: 管理
  271 Posts :: 0 Stories :: 58 Comments :: 0 Trackbacks

留言簿(5)

我参与的团队

搜索

  •  

积分与排名

  • 积分 - 319342
  • 排名 - 75

最新评论

阅读排行榜

评论排行榜

#include<iostream>
using namespace std;
//p to q, q+1 to r
void merge(int A[], int p, int q, int r)
{
    
int len1=q-p+1;
    
int len2=r-q;
    
int *L=new int[len1+1];
    
int *R=new int[len2+1];

    
for(int i=0;i<len1;i++)
        L[i]
=A[i+p];
    
for(int i=0;i<len2;i++)
        R[i]
=A[i+q+1];

    L[len1]
=R[len2]=INT_MAX;

    
int i,j;
    i
=j=0;
    
for(int t=p;t<=r;t++)
    {
        
if(L[i]>R[j])
        {
            A[t]
=R[j];
            j
++;
        }
        
else
        {
            A[t]
=L[i];
            i
++;
        }
    }

    delete[] L;
    delete[] R;
}
void mergeSort(int A[], int l,int r)
{
    
if(l<r)
    {
        
int mid=(l+r)/2;
        mergeSort(A,l,mid);
        mergeSort(A,mid
+1,r);
        merge(A,l,mid,r);
    }
}
int main()
{
    
const int M=100;
    
int A[M];
    
int n;
    n
=0;
    
while(scanf("%d",&A[n])!=EOF)
        n
++;
    mergeSort(A,
0,n-1);
    
for(int i=0;i<n;i++)
        printf(
"%d ",A[i]);
}
posted on 2011-03-25 17:23 baby-fly 阅读(609) 评论(0)  编辑 收藏 引用 所属分类: Algorithm

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理