美文网首页
Merge Sort

Merge Sort

作者: 綿綿_ | 来源:发表于2019-04-01 13:40 被阅读0次
    public class MergeSort {
        static final int SIZE=15;
        static void mergeOne(int a[],int b[],int n, int len)
        {
            int i,j,k,s,e;
            s=0;
            
            while(s+len<n)
            {
                e=s+2*len-1;
                if(e>=n)
                {
                    e=n-1;
                }
                k=s;
                i=s;
                j=s+len;
                while(i<s+len && j<=e)
                {
                    if(a[i]<=a[j])
                    {
                        b[k++]=a[i++];
                    }
                    else {
                        b[k++]=a[j++];
                    }
                }
                while(i<s+len)
                {
                    b[k++]=a[i++];
                }
                while(j<=e)
                {
                    b[k++]=a[j++];
                }
                s=e+1;
            }
            if(s<n)
            {
                for(;s<n;s++)
                {
                    b[s]=a[s];
                }
            }
        }
    static void mergeSort(int a[],int n)
        {
            int h,len,f;
            
            len=1;
            f=0;
            
            int[] p=new int [n];
            while(len<n)
            {
                if(f==1)
                {
                    mergeOne(p,a,n,len);
                }
                else
                {
                    mergeOne(a,p,n,len);
                }
                len=len*2;
                f=1-f;
            }
                if(f==1)
                {
                    for(h=0;h<n;h++)
                    {
                        a[h]=p[h];
                    }
                }
        }
    }
    

    相关文章

      网友评论

          本文标题:Merge Sort

          本文链接:https://www.haomeiwen.com/subject/ercvbqtx.html