`
hongjn
  • 浏览: 57619 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

归并排序(MergeSort) Java实现

阅读更多
归并排序的Java实现:

import java.util.Arrays;

public class MergeSort {

    public static void sort(Comparable[] data, int p, int r) {

        /*
         * p = 0; r = 3; total 4;
         * q = (0 + 3) / 2; q = 1;
         * sort(0, 1); sort(2,3);
         * sort(p, q); sort(q + 1, r);
         */
        if (p < r) {
            int q = (p + r) / 2;
            sort(data, p, q);
            sort(data, q + 1, r);
            merge(data, p, q, r);
        }

    }

    private static void merge(Comparable[] data, int p, int q, int r) {
        Comparable[] left = Arrays.copyOfRange(data, p, q + 1);

        Comparable[] right = Arrays.copyOfRange(data, q + 1, r + 1);

        int i = 0;
        int j = 0;
        int k = 0;
        while (k < r - p + 1) {
            if (i == left.length) {
                data[p + k] = right[j++];
            }
            else if (j == right.length) {
                data[p + k] = left[i++];
            }
            else if (left[i].compareTo(right[j]) < 0) {
                data[p + k] = left[i++];
            }
            else {
                data[p + k] = right[j++];
            }
            k++;
        }

    }

}

2
2
分享到:
评论

相关推荐

    java实现归并排序

    Java实现归并排序 Java 实现归并排序是一种常用的排序算法,通过分治策略将原始数组分成小组,然后对每个小组进行排序,最后将排序好的小组合并成一个有序数组。下面是 Java 实现归并排序的知识点总结: 基本思想 ...

    归并排序的java实现.docx

    归并排序是一种高效的排序算法,基于分治策略。...通过上述分析,我们可以看到,归并排序的Java实现利用了分治策略,将数组拆分成更小的部分,然后合并这些部分以达到排序的目的。这种方法确保了排序的效率和稳定性。

    Java实现归并排序

    在Java中实现归并排序,主要涉及到以下几个关键步骤: 1. **分割(Divide)**:将原始数组分为两个相等(或接近相等)的子数组。这通常通过取数组中间索引来完成。例如,如果数组长度为`n`,则可以将前`n/2`个元素...

    归并排序Java_归并排序_

    以上就是归并排序的基本原理和Java实现,通过`MergeSort`类,你可以方便地对任何整数数组进行排序。归并排序在许多实际场景中都发挥着重要作用,例如大数据处理、文件排序等。了解并掌握这种排序算法对于提升编程...

    归并排序(JAVA)

    归并排序是一种经典的排序算法,基于分治策略。在Java中实现归并排序,我们可以将一个大数组分成两个...通过深入理解和实践`MergeSort.java`文件,你可以掌握归并排序的基本原理和实现技巧,进一步提升自己的编程能力。

    java实现归并排序代码

    以下是用Java实现归并排序的详细步骤: 1. 创建一个名为`mergeSort`的方法,用于进行递归的分割和排序。 2. 在`mergeSort`方法中,首先判断传入数组的长度,如果长度为1,那么数组自然有序,直接返回。 3. 找到数组...

    Java实现归并排序.rar

    归并排序是一种经典的排序算法,基于分治策略。...总的来说,Java实现归并排序涉及的主要知识点包括分治策略、递归、数组操作以及合并算法的设计。通过熟练掌握这些概念,可以有效地在实际编程中实现高效的排序功能。

    归并排序介绍和java代码实现

    归并排序是一种高效的排序算法,基于分治策略。它的核心思想是将大问题分解为小问题,然后逐一解决,最后将结果合并。...通过理解其工作原理和Java实现,开发者可以在实际项目中灵活运用归并排序来优化算法性能。

    算法-归并排序(java)(csdn)————程序.pdf

    下面将详细介绍归并排序算法的java实现。 什么是归并排序? 归并排序是一种基于分治策略的排序算法。其基本思想是将一个大的无序数组分成两个或多个小数组,递归地将每个小数组排序,然后将排好序的子数组合并成一...

    java实现的shell排序快速排序归并排序堆排序

    `mergesort.java`文件应该包含了归并排序的分治过程。 4. **堆排序**: 堆排序是由Napier和Rabin在1962年提出,它利用了堆这种数据结构。堆是一个近似完全二叉树的结构,并同时满足堆的性质:即子节点的键值或索引...

    java归并排序

    在Java中实现归并排序,我们可以分别实现递归版和非递归版,这两种方法各有其特点和适用场景。 ### 1. 分治策略 归并排序的核心是分治法,它将一个大数组分为两个相等或接近相等的子数组,分别对这两个子数组进行...

    java实现归并排序算法

    在Java中,我们可以看到一个典型的归并排序实现。`mergeSort()`方法是归并排序的主函数,它接受一个整数数组`a`,一个临时数组`tmp`以及两个表示子序列范围的索引`left`和`right`。`mergeSort()`首先检查左边界是否...

    Java实现归并排序算法(源代码)

    ### Java实现归并排序算法(源代码)知识点详解 #### 一、归并排序概述 归并排序是一种经典的排序算法,其核心思想是分而治之。它将一个大问题分解为若干个相同的小问题来解决,最终通过合并这些小问题的解来得到...

    归并排序及的java实现.pdf

    在Java中实现归并排序,我们可以创建一个名为`MergeSort1`的类,并定义一个主函数`main`来接收用户输入的待排序数组。首先,通过`Scanner`类获取用户输入的数字个数和具体数字,将这些数字存储到一个整型数组`a`中。...

    java编程实现分治法归并排序

    ### Java编程实现分治法归并排序 #### 分治法基本思想 分治法是一种将大问题分解成小问题,并通过解决这些小问题来解决原始问题的方法。这种方法的基本步骤包括: 1. **分解**:将一个问题分解为若干个规模较小的...

    可视化归并排序

    在Java中实现归并排序,你需要定义一个方法来进行这些操作。`mergeSort()`方法会递归地分割数组,而`merge()`方法则负责合并已排序的子数组。`merge()`通常使用两个指针,分别从两个子数组的开头开始,每次选择较小...

    合并排序的Java实现方法MergeSort

    合并排序的Java实现是算法学习的一个重要里程碑,它不仅是一种实用的排序技术,而且是一种加深对数据结构和算法原理理解的有效工具。通过实现和学习合并排序,Java初学者可以提高编程技能,同时也为未来学习更高级的...

    基于数组的归并排序_array_mergesort.zip

    在编程语言中,归并排序是许多高级排序函数的底层实现,如Java中的Arrays.sort()和Python中的sorted()。 除了基础的归并排序外,还存在一些变种,例如多路归并排序,可以同时处理多个有序的输入序列;另外,还有自...

    归并排序算法(Merge Sort)的Java实现

    归并算法的简单举例

Global site tag (gtag.js) - Google Analytics