现在的位置: 首页 > 综合 > 正文

java 合并排序算法(二)

2017年12月06日 ⁄ 综合 ⁄ 共 1413字 ⁄ 字号 评论关闭

java applet http://translate.google.cn/translate?hl=zh-CN&sl=en&u=http://www.geocities.com/SiliconValley/Program/2864/File/Merge1/mergesort.html&ei=00K-ScfgLdjZkAWpvOWkCA&sa=X&oi=translate&resnum=1&ct=result&prev=/search%3Fq%3Dedu%2Bjava%2BMERGE%2BSORT%26hl%3Dzh-CN%26rlz%3D1T4GGLL_zh-CN%26newwindow%3D1 

 

 

public class MergeSort
{
    public int[] merge(int[] set)
    {
        if (set.length > 1)
        {
            int n = set.length / 2;

int[] low = new int[n];
            int[] high = new int[set.length-n];
            for (int i = 0; i < set.length; i++)
            {
                if (i < n) { low[i] = set[i]; }
                else { high[i-n] = set[i]; }
            }
            return merge(merge(low), merge(high));
        }
        return set;
    }
   
    public int[] merge(int[] a, int[] b)
    {
        int d = 0, i = 0, j = 0;
        int[] c = new int[a.length + b.length];
        while (i < a.length && j < b.length)
        {
            c[d++] = (a[i] < b[j] ? a[i++] : b[j++]);
            if (i == a.length) { for(;j<b.length;j++) c[d++] = b[j]; }
            else if (j == b.length) { for(;i<a.length;i++) c[d++] = a[i]; }
        }
        return c;
    }
 
    public MergeSort(int[] set)
    {
        int[] sortedSet = merge(set);
        printArray(sortedSet);
    }
   
    public void printArray(int[] a)
    {
        for(int i = 0; i < a.length - 1; i++)
        {
            System.out.print(a[i] + ", ");
        }
        System.out.println(a[a.length-1]);
    }
   
    public static void main(String[] args)
    {
        int set[] = {1,6,3,4,7,3,2};
        new MergeSort(set);
    }
}

抱歉!评论已关闭.