`

排序算法java实现归并排序

 
阅读更多

 

public class MergeSort {

//归并排序

//基本思想:归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法的一个非常典型的应用。

//首先考虑下如何将两个有序数列合并:

//比较两个数列的第一个数,谁小就先去谁,取了后就在对应数列中删除这个数,然后再进行比较,

//如果数列为空,那么将另一个数列的数据依次取出即可。

 

//解决了两个数列合并问题,再来看归并排序,基本思路就是:

//将数组分成A,B两组,如果这两组内的数据都是有序的,就可以很方便的将这两组数据进行排序。

//那么可以将A,B组各自再分成两组,依次类推,当分出来的小组只有一个数据时,可以认为这个小组组内已经达到了有序,

//然后再合并相邻的两个小组就可以了,这样通过先递归的分解数列,再合并数列就完成了归并排序你。

 

      //过程



 

//平均时间复杂度:O(nlogn)

//将数列分开成小数列为log(n),和并数列的过程为:O(n)

 

public static void main(String[] args) {

int[] arr = new int[]{6,2,4,1,9,3,6,7,0};

System.out.println("排序前=====");

print(arr);

System.out.println("");

System.out.println("排序后");

int[] temp = new int[arr.length];

mergeSort(arr,0,arr.length-1,temp);

print(arr);

}

 

public static void mergeSort(int[] arr,int first,int last,int[] temp) {

if(first < last){

int middle = (first + last) / 2;

mergeSort(arr,first,middle,temp);

mergeSort(arr,middle+1,last,temp);

mergeArray(arr,first,middle,last,temp);

}

 

}

 

//将两个数组合并

public static void mergeArray(int[] arr, int first,int middle,int last,int[] temp){

int i= first;

int j = middle + 1;

int k = 0;

while(i<=middle && j<=last){

if(arr[i]<=arr[j]){

temp[k] = arr[i];

k++;

i++;

}else{

temp[k] = arr[j];

k++;

j++;

}

}

while(i <= middle){

temp[k] = arr[i];

k++;

i++;

}

 

while(j<=last){

temp[k] = arr[j];

k++;

j++;

}

 

for(int x=0; x<k; x++){

arr[first+x] = temp[x];

}

}

 

public static void print(int[] arr){

for(int i=0; i<arr.length; i++){

System.out.print(arr[i]+",");

}

}

}

 

  • 大小: 101.8 KB
分享到:
评论

相关推荐

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

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

    java实现归并排序

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

    各种排序算法java实现

    在Java编程语言中,排序算法是数据结构与算法学习中的重要组成部分。...在Java开发中,除了这些基础排序算法,还有更高级的排序算法如快速排序、归并排序、堆排序等,它们在效率和复杂度上都有更深入的研究和应用。

    基数排序算法 java实现

    然而,它并不适用于浮点数或非整数类型的数据,且如果数据量较小,基数排序可能不如其他简单排序算法(如快速排序或归并排序)高效。在实际应用中,我们需要根据具体情况来选择最适合的排序算法。

    常见的七大排序算法Java实现.zip

    本压缩包"常见的七大排序算法Java实现.zip"包含了七种经典的排序算法在Java语言中的实现。尽管文件列表中并未明确列出每种排序算法的名称,但根据常规,这七大排序算法可能包括冒泡排序、插入排序、选择排序、快速...

    排序算法JAVA实现,eclipse+txt

    Java作为一种广泛应用的编程语言,提供了丰富的工具和技术来实现各种排序算法。本资料包包含了一个基于Java的排序算法实现,以及Eclipse工程文件,方便开发者在Eclipse集成开发环境中进行调试和学习。 1. **冒泡...

    常用排序算法java演示

    本文将深入探讨标题"常用排序算法java演示"中涉及的知识点,包括排序算法的原理、Java实现方式以及其在实际应用中的图形演示。 首先,让我们逐一了解几种常见的排序算法: 1. **冒泡排序(Bubble Sort)**:这是一...

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

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

    常用排序算法的java实现(冒泡、插入、选择、希尔、归并、快排)

    本篇文章将详细讲解标题中提到的六种常见排序算法的Java实现。 1. **冒泡排序**:冒泡排序是最基础的排序算法之一,它通过不断交换相邻的逆序元素来逐渐将较大的元素“浮”到数组的前端。在Java中,冒泡排序的基本...

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

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

    内部排序算法java实现

    这里我们将深入探讨Java实现的几种内部排序算法,包括希尔排序、快速排序、堆排序、归并排序、冒泡排序、插入排序和选择排序。 首先,希尔排序是一种基于插入排序的算法,通过将原始数组分解成多个子序列来提高效率...

    java实现归并排序算法

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

    排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序.mht

    排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序.mht

    常用各种排序算法Java的实现_差不多了__.rar

    本资源"常用各种排序算法Java的实现_差不多了__.rar"显然是一个包含了各种经典排序算法Java实现的压缩文件,对于学习和理解这些算法的开发者来说极具价值。 首先,我们来概述一下常见的排序算法: 1. 冒泡排序:是...

    JAVA写的6种内部排序算法简单实现

    这里我们主要探讨的是使用Java语言实现的六种内部排序算法。内部排序是指在内存中完成的排序过程,它不涉及外部存储器交互。这六种排序算法可能包括常见的快速排序、归并排序、插入排序、选择排序、冒泡排序以及堆...

Global site tag (gtag.js) - Google Analytics