Merge Sort

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];
                }
            }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容