`

MergeSort

阅读更多
 MergeSort is a sample solution from the idea Dive - and - Conquer.
I show my code below:
 
java 代码
  1.   
  2. public class MergeSort {   
  3.        
  4.     public static void sort(int[] array, int i, int j) {   
  5.         if (j-i == 1) {   
  6.             if (array[i]>array[j]) {   
  7.                 int tmp = array[i];   
  8.                 array[i] = array[j];   
  9.                 array[j] = tmp;   
  10.             }    
  11.         } else {   
  12.             int mid = (i + j - 1) / 2;   
  13.             sort(array, i, mid);   
  14.             sort(array, mid+1, j);   
  15.             int[] newArray = merge(array, i, mid, mid+1, j);   
  16.             int k = 0;   
  17.             for (int index = i; index<=j; index++) {   
  18.                 array[index] = newArray[k];   
  19.                 k++;   
  20.             }   
  21.         }   
  22.     }   
  23.        
  24.     public static int[] merge(int[] array, int i, int m, int j, int n) {   
  25.         int[] newArray = new int[n-i+1];   
  26.         int k = 0;   
  27.         while ((i<=m) && (j<=n)) {   
  28.             if (array[i]<array[j]) {   
  29.                 newArray[k] = array[i];   
  30.                 i++;   
  31.                 k++;   
  32.             } else {   
  33.                 newArray[k] = array[j];   
  34.                 j++;   
  35.                 k++;   
  36.             }   
  37.         }   
  38.         if (i>m) {   
  39.             for ( ; j<=n; j++) {   
  40.                 newArray[k++] = array[j];   
  41.             }      
  42.         } else {   
  43.             for ( ; i<=m; i++) {   
  44.                 newArray[k++] = array[i];   
  45.             }   
  46.         }   
  47.         return newArray;   
  48.     }   
  49.        
  50.     public static void main(String[] args) {   
  51.         int[] array = {14252630};   
  52.         sort(array, 0, array.length - 1);   
  53.         for (int i=0; i<array.length; i++) {   
  54.             System.out.print(array[i] + " ");   
  55.         }   
  56.     }   
  57. }  
分享到:
评论

相关推荐

    mergesort

    mergesort java implement~!

    MergeSort(合并排序)

    ### 合并排序(MergeSort)知识点解析 #### 一、合并排序算法介绍 合并排序是一种采用分治法策略的高效排序算法。其基本思想是将待排序的序列分为两个子序列,对这两个子序列分别进行排序,再将排好序的子序列合并成...

    MergeSort.rar

    在"MergeSort.rar"压缩包中,我们很可能会找到一个C++实现归并排序的例子。现在,我们将深入探讨归并排序的原理、步骤以及C++实现的关键细节。 归并排序的工作原理: 1. 分解:首先,将待排序的序列分为两个相等或...

    归并排序mergesort

    归并排序(Mergesort)是一种经典的排序算法,它基于分治法(Divide and Conquer)的设计理念。在C++中实现归并排序,我们可以遵循以下步骤: 1. **理解分治法**:分治法是将一个大问题分解成若干个规模较小的相同...

    sort-使用C++实现的排序算法之MergeSort.zip

    MergeSort,也称为归并排序,是一种高效的、稳定的排序算法,基于分治法(Divide and Conquer)策略。本文将深入探讨MergeSort的基本原理、C++实现以及其在实际应用中的优势与局限性。** **一、MergeSort基本原理**...

    排序算法-基于C语言实现的排序算法之MergeSort实现.zip

    这个压缩包提供了基于C语言实现的排序算法,特别是MergeSort(归并排序)的实例。 **归并排序(Merge Sort)** 归并排序是一种采用分治法(Divide and Conquer)的排序算法。它的基本思想是将大问题分解为小问题来解决...

    mergesort非递归算法C++实现

    用非递归算法实现合并排序,具有高效的特征,从底向上

    cpp-ShiftSort比MergeSort快的排序算法并且是自适应和稳定

    ShiftSort是一种排序算法,它与经典的MergeSort相比,在某些特定情况下可以提供更快的性能,并且具有自适应和稳定的特点。让我们深入探讨这个算法及其与MergeSort的差异。 首先,MergeSort是一种分治策略的排序算法...

    MergeSort_Demo.rar_DEMO_Mergeso

    在这个场景中,"MergeSort_Demo.rar_DEMO_Mergeso" 提供了一个用C语言实现的归并排序算法的演示程序。下面我们将详细探讨归并排序的原理、步骤以及在C语言中的实现。 一、归并排序的基本原理 1. 分治法:归并排序...

    c语言实现归并排序算法 mergesort

    归并排序(Merge sort,台湾译作:合并排序)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 算法步骤: 1. 申请空间,使其大小为两个已经排序序列之...

    最近点算法 Mergesort 分治 vector都有应用很好的编程范例

    在编程领域,分治策略是一种高效且广泛应用的算法设计方法,而Mergesort(归并排序)则是分治策略的一个经典实例。归并排序利用了分治的思想,将大问题分解为小问题来解决,然后合并这些小问题的解以得到原问题的解...

    POJ1804-Brainman【借助Mergesort求逆序数O(nlogn)】

    本题目的核心是利用归并排序(Mergesort)算法来实现逆序数的计算,以达到O(n log n)的时间复杂度,避免平方级别的效率消耗。 首先,我们要理解什么是逆序对。在一组排序的整数序列中,如果一个较大的数字位于较小...

    C语言实现mergeSort.rar

    C语言实现mergeSort.rar

    Python手撕算法MergeSort

    Python手撕算法MergeSort

    排序算法之MergeSort

    python 排序算法之MergeSort

    C语言代码insertion&mergeSort

    在IT领域,排序算法是计算机科学中的核心概念,特别是在数据结构和算法分析中。本文将深入探讨两种在C语言中实现的排序算法:插入排序(Insertion Sort)和归并排序(Merge Sort)。这两种方法虽然原理不同,但都能...

    VC++大数据mergesort实现

    本代码实现对大量无序字符串的排序。采用mergesort。时间复杂度为O2。输出结果自动保存在一个text文件中。

Global site tag (gtag.js) - Google Analytics