经典算法-归并排序

原创 2018年04月15日 20:33:15

先明白merge,单单2个数组的排序算法;然后在写递归条件以及调用处理

package jvm;

public class Main {
    public static void merge(int[] a , int first ,int mid ,int last ,int[] temp ) {
        /*if(first == last)
            return;*/
        int i ,j;
        for(i= first,j= mid +1;first<=mid &&j<=last;i++ ) {
            if(a[first]>=a[j]) temp[i] = a[first++];
            else temp[i] = a[j++];
        }
        while(first < mid ) temp[i++] = a[first++];
        while(j < last ) temp[i++] = a[j++];
    }

    public static void mergesort(int[] a,int first ,int last ,int[] temp) {
        if(first < last)//判定出栈的条件
        {
            int mid = (first+last)/2;
            mergesort(a,first,mid,temp);
            mergesort(a,mid+1,last,temp);
            merge(a, first, mid, last, temp);
        }
    }

    public static void main(String[] args) {
        int[] a = {1,2,3,10,23,41,532,21};
        int[] temp = new int[a.length];
        if(a.length == 0)
            return;
        mergesort(a, 0, a.length, temp);
    }
}

数据结构JAVA版2017教学视频课程

本课程共28个教学视频课程,22小时的教学时间,深入浅出的理论讲解,用JAVA语言实现每个知识点的代码,大量的上机练习题讲解,通过家家乐停车场,佳佳乐彩票机,佳佳乐通讯录,编译原理的语法分析等项目的综合应用实训,上课PPT,上课源代码等资料可以直接下载使用
  • 2017年03月31日 13:31

经典算法之二路归并排序

二路归并排序是先将整个序列分为两半,对每一半分别归并排序,将得到两个有序序列,然后将这两个序列归并成一个序列即可。...
  • wardseptember
  • wardseptember
  • 2017-12-06 12:55:18
  • 111

经典算法之归并排序的C实现方法

以前写过归并排序的算法,但是时间过了好久,忘记怎么写的了,(也是醉了)。正好复习算法的时候遇到这个问题,就重新写了一下,把遇到的一些问题顺便记录一下。核心就是用两个子数组记录分割后的两个数组中的变量,...
  • zhyh1435589631
  • zhyh1435589631
  • 2015-06-06 16:00:56
  • 1233

经典算法--归并排序

#include using namespace std; /*归并排序是一个稳定的排序,时间复杂度为O(nlgn)*/ void Merge(int a[],int n,int b[],int...
  • ccy0815ccy
  • ccy0815ccy
  • 2014-04-05 10:15:01
  • 402

经典算法之归并排序

归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列...
  • IWantToHitRen
  • IWantToHitRen
  • 2016-06-04 21:15:16
  • 283

图示经典算法--自底向上的归并排序

自底向上的归并排序自底向上的归并排序使用分治思想,将数组先两两归并,再四四归并,然后八八归并,直到整个数组有序。class MergeBU(object): """docstring for ...
  • qdudz
  • qdudz
  • 2016-03-26 16:25:40
  • 285

经典算法学习——归并排序

归并排序算法采用的是分治算法,即把两个或两个以上的有序表合并成一个新的有序表的过程。首先把待排序的序列分成若干个子序列,每个子序列都是有序的,然后把有序子序列合并成整体有序序列,这个过程也称为2路归并...
  • CHENYUFENG1991
  • CHENYUFENG1991
  • 2016-02-16 17:42:44
  • 2381

图示经典算法--自顶向下的归并排序

自顶向下的归并排序归并排序使用分治思想,将两个子数组排序,通过归并两个子数组来将整个数组排序class TopDownMergeSort(): """自顶向下的归并排序""" @clas...
  • qdudz
  • qdudz
  • 2016-03-26 15:54:04
  • 445

经典算法之二:归并排序

归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列...
  • hurmishine
  • hurmishine
  • 2016-12-24 15:27:19
  • 320

归并排序 sort 计算机排序算法

  • 2009年12月17日 11:40
  • 876KB
  • 下载
收藏助手
不良信息举报
您举报文章:经典算法-归并排序
举报原因:
原因补充:

(最多只允许输入30个字)