`

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

    - 在JavaScript中,我们可以创建一个名为`mergeSort`的函数,接收一个数组作为参数。 - 利用递归检查数组长度,如果长度小于等于1,则返回数组本身,因为长度为1的数组已经是有序的。 - 分割数组:找到中间索引,...

    mergesort

    基于c++的归并排序算法。排序算法大体可分为两种: 一种是比较排序,时间复杂度O(nlogn) ~ O(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。 另一种是非比较排序,时间复杂度可以达到...

    C语言实现mergeSort.rar

    C语言实现mergeSort.rar

    了解Python中的这种mergesort实现

    在Python编程语言中,归并排序(Mergesort)是一种高效的、稳定的排序算法,它采用了分治(Divide and Conquer)策略。这个算法的基本思想是将大问题分解为小问题来解决,然后合并这些小问题的解,最终得到大问题的...

    MergeSort:执行三路归并排序

    在Java中,我们可以定义一个名为`mergeSort3Way`的函数来实现三路归并排序。这个函数接受一个整型数组作为参数,然后调用递归方法`sort3Way`来执行实际的排序工作。`sort3Way`函数中,我们首先检查数组的长度,如果...

    MergeSort-MergeSort

    MergeSort-MergeSort

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

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

    MergeSort:归并排序算法的实现

    public void mergeSort(int[] arr, int left, int right) { if (left ) { int mid = (left + right) / 2; mergeSort(arr, left, mid); // 递归排序左半部分 mergeSort(arr, mid + 1, right); // 递归排序右半...

    MergeSort.rar

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

    MergeSort:MergeSort算法

    **合并排序(MergeSort)算法详解** 合并排序是一种基于分治思想的排序算法,由美国计算机科学家John von Neumann在1945年提出。它将一个大问题分解为两个或更多的小问题,分别解决后再合并结果,最终得到原问题的...

Global site tag (gtag.js) - Google Analytics