美文网首页
Java实现归并排序

Java实现归并排序

作者: 田真的架构人生 | 来源:发表于2017-08-10 09:39 被阅读0次
public class MergeSort {
    //将有二个有序数列a[first...mid]和a[mid...last]合并。 
    static void mergearray(int a[], int first, int mid, int last, int temp[]) {
        int i = first, j = mid + 1;
        int m = mid, n = last;
        int k = 0;


        while (i <= m && j <= n) {
            if (a[i] <= a[j])
                temp[k++] = a[i++];
            else
                temp[k++] = a[j++];
        }


        //如果从mid到last的数据已经遍历完毕,将first到mid剩余的数据拷贝至sorted
        while (i <= m) {
            temp[k++] = a[i++];
        }


        //如果从first到mid的数据已经遍历完毕,将mid到last剩余的数据拷贝至sorted
        while (j <= n) {
            temp[k++] = a[j++];
        }


        //至此,temp[]为有序的数组


        //更改a[]中first至last元素顺序,使其排序
        for (i = 0; i < k; i++) {
            a[first + i] = temp[i];
        }
    }


    static void mergesort(int a[], int first, int last, int temp[]) {
        if (first < last) {
            int mid = (first + last) / 2;
            mergesort(a, first, mid, temp); //递归,将数组切割至最小(1个元素)
            mergesort(a, mid + 1, last, temp); //同上
            mergearray(a, first, mid, last, temp); //再将相邻的二个元素合并、排序,往上递归,直至最后合并成一个最大的有序数组 
        }
    }


    public static void main(String[] args) {
        int[] x = { 6, 2, 4, 1, 5, 9, 3 };
        int[] sorted = new int[x.length];
        mergesort(x, 0, x.length - 1, sorted);


        for (int i = 0; i < sorted.length; i++) {
            System.out.println(sorted[i]);
        }
    }
}

相关文章

  • 归并排序

    归并排序Java实现

  • 归并排序

    归并排序 代码实现(java):

  • 常用排序算法的Java实现

    冒泡、插入、选择、归并、快速排序的Java实现

  • 排序

    八大排序算法 一、归并排序 递归及非递归的JAVA实现 二、快速排序 快排算法JAVA实现 三、堆排序 堆排序堆排...

  • Java代码实现归并排序

    Java代码实现归并排序 归并排序(Merge Sort) 思路:如果要排序一个数组,我们先把数组从中间分成前后两...

  • 面试知识点

    排序冒泡排序快速排序选择排序插入排序二路归并 查找二分查找 排序和查找的java实现 java语言Java字符串字...

  • 排序算法Java实现

    本文会通过Java语言实现:冒泡排序,插入排序,选择排序,归并排序,快速排序,桶排序,计数排序,基数排序,希尔排序...

  • 排序算法的实现

    用java对常用内部排序算法的实现。 对冒泡排序,简单选择排序,直接插入排序,希尔排序,归并排序的简单实现(缺少快...

  • 算法—排序篇2

    1、归并排序(Merging Sort) 归并排序(Merging Sort): 就是利用归并的思想实现排序⽅法....

  • 归并排序&快速排序

    归并排序 利用归并的思想实现排序方法,该算法采用经典的分治策略,分而治之。 代码实现 基础设置 归并排序 —— 非...

网友评论

      本文标题:Java实现归并排序

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