`

java算法之归并排序

 
阅读更多
package com.hym.test.algorithms;

public class MergeSort {
	private int[] arrayTest = { 5, 26, 1, 783, 23, 2, 62, 9, 46 };

	public void mergeSort() {
		int[] workArray = new int[arrayTest.length];
		reMergeSort(workArray, 0, arrayTest.length - 1);
	}

	public void reMergeSort(int[] workArray, int begin, int end) {
		if (begin == end) {
			return;
		} else {
			int middle = (begin + end) / 2;

			reMergeSort(workArray, begin, middle);

			reMergeSort(workArray, middle + 1, end);

			merge(workArray, begin, middle + 1, end);
		}
	}

	public void merge(int[] workArray, int begin, int middle, int end) {
		int j = 0;
		int low = begin;
		int mid = middle - 1;
		int n = end - low + 1;

		while (begin <= mid && middle <= end) {
			if (arrayTest[begin] < arrayTest[middle]) {
				workArray[j++] = arrayTest[begin++];
			} else {
				workArray[j++] = arrayTest[middle++];
			}
		}

		while (begin <= mid) {
			workArray[j++] = arrayTest[begin++];
		}

		while (middle <= end) {
			workArray[j++] = arrayTest[middle++];
		}

		for (j = 0; j < n; j++) {
			arrayTest[low + j] = workArray[j];
		}
	}

	public static void main(String[] args) {
		MergeSort sort = new MergeSort();
		sort.mergeSort();
		for (int i = 0; i < sort.arrayTest.length; i++) {
			System.out.print(sort.arrayTest[i] + " ");
		}
	}
}


归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。

http://baike.baidu.com/view/90797.htm
分享到:
评论

相关推荐

    java算法——归并排序

    归并排序 在排序前,先建好一个长度等于原数组长度的临时数组

    如何使用Java实现归并排序算法,程序详细解读

    归并排序:如何使用Java实现归并排序算法,程序详细解读; 归并排序:如何使用Java实现归并排序算法,程序详细解读; 归并排序:如何使用Java实现归并排序算法,程序详细解读; 归并排序:如何使用Java实现归并排序...

    java实现归并排序

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

    java 算法之归并排序详解及实现代码

    归并排序是一种高效的排序算法,其核心思想是分治法。在Java中,归并排序通过将数组分为两半,分别对每一半进行排序,然后将两个已排序的半部分合并成一个完整的有序数组来实现。这种算法适用于大数据集,因为它的...

    [Java算法-排序]归并排序.java

    该资源提供了一份全面的指南,介绍了如何在Java中实现归并排序。文档中涵盖了归并排序的基本概念,包括如何对数组进行排序以及如何在Java中实现归并排序。此外,文档还包括一个逐步指南,介绍如何在Java中实现归并...

    详解Java常用排序算法-归并排序

    Java常用排序算法-归并排序 归并排序是一种分治思想的排序算法,其基本思想是将待排序的数组分成若干个子序列,每个子序列都是有序的,然后再将子序列合并成一个有序的数组。这种算法的时间复杂度为O(n log n),...

    java 基本算法之归并排序实例代码.docx

    下面我们将深入探讨归并排序的原理、步骤以及如何在Java中实现这个算法。 **归并排序原理** 归并排序的基本思想是将待排序的序列分割成若干个子序列,每个子序列都是有序的,然后再将这些有序子序列合并成一个完整...

    快速排序算法以及归并算法

    根据给定的文件信息,我们将深入探讨两种经典的排序算法——快速排序和归并排序,并结合Java语言实现进行详细解析。 ### 快速排序算法 快速排序是一种高效的排序算法,采用分而治之的策略,其核心思想是选择一个...

    归并排序Java_归并排序_

    归并排序是一种高效的排序算法,基于分治策略。在Java中实现归并排序,我们可以创建一个名为`MergeSort`的类来封装整个过程。归并排序的基本思想是将待排序的序列分成两个或更多的子序列,对每个子序列分别进行排序...

    排序算法——归并排序

    自动生成500个随机数,然后对这500个随机数进行归并排序

    快速排序与归并排序的算法比较实验报告

    这篇实验报告将深入探讨两种经典的排序算法——快速排序和归并排序,通过对它们在Java环境中的实现和性能测试,揭示它们在处理不同规模数据时的效率差异。 **快速排序(Quick Sort)** 快速排序由C.A.R. Hoare在...

    Java排序算法之归并排序简单实现

    "Java排序算法之归并排序简单实现" Java排序算法中的归并排序是一种高效的排序算法,它的平均时间复杂度、最好时间复杂度和最坏时间复杂度均为O(nlogn),空间复杂度为O(n),是一种稳定的排序算法。下面是对归并...

    Java实现归并排序

    归并排序(Merge Sort)是一种基于分治策略的高效排序算法。它的基本思想是将待排序的元素序列分成两个或更多的子序列,分别对每个子序列进行排序,然后将排好序的子序列合并成一个有序序列。这个过程可以递归进行,...

    java数据结构排序算法之归并排序详解

    Java数据结构排序算法之归并排序详解 Java数据结构排序算法之归并排序是基于合并的思想,将两个或两个以上有序表合并成一个新的有序表。这种方法被称作是2-路归并排序(基本操作是将待排序列中相邻的两个有序子...

    Java ArrayList实现的快排,归并排序,堆排序

    本篇将重点讲解如何利用ArrayList实现快速排序(Quick Sort)、归并排序(Merge Sort)和堆排序(Heap Sort)这三种经典的排序算法,并探讨它们的原理、优缺点以及在实际应用中的选择。 **快速排序(Quick Sort)**...

    插入排序和归并排序的实现java

    这里我们将深入探讨两种常见的排序算法:插入排序(Insertion Sort)和归并排序(Merge Sort),它们都是在Java环境下实现的。 **插入排序**是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序...

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

    归并排序算法-java 实现 在计算机科学中,排序算法是指将一组无序的数据按照某种规则排列成有序的数据。归并排序(Merge Sort)是一种常用的排序算法,属于分治算法的范畴。下面将详细介绍归并排序算法的java实现。...

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

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

    JavaSwing归并排序动画源码(含其他排序)

    在这个场景中,我们讨论的焦点是使用 Java Swing 来实现一个排序算法的动画展示,特别是归并排序。归并排序是一种高效的、稳定的排序算法,它的基本思想是将大问题分解为小问题来解决,通过递归地将两个或更多有序数...

Global site tag (gtag.js) - Google Analytics