`
SunnyYoona
  • 浏览: 361572 次
社区版块
存档分类
最新评论

经典白话算法之归并排序

 
阅读更多



void Merge(int A[],int p,int q,int r){
    int i,j,k;
    //计算子数组A[p..q]的元素个数
    int n1 = q - p + 1;
    //计算子数组A[q+1..r]元素个数
    int n2 = r - q;
    //创建子数组L,R
    int* L = (int*)malloc(sizeof(int)*(n1+1));
    int* R = (int*)malloc(sizeof(int)*(n2+1));
    //将子数组A[p..q]赋值到L数组
    for(i = 0;i < n1;i++){
        L[i] = A[p+i];
    }//for
    //将子数组A[q+1..r]赋值到R数组
    for(i = 0;i < n2;i++){
        R[i] = A[q+1+i];
    }//for
    //将哨兵置于数组末尾
    L[n1] = INT_MAX;
    R[n2] = INT_MAX;
    //合并
    i = 0;j = 0;
    for(k = p;k <= r;k++){
        if(L[i] <= R[j]){
            A[k] = L[i++];
        }else{
            A[k] = R[j++];
        }
    }//for
}
void MergeSort(int A[],int p,int r){
    //容错
    if(p >= r){
        return;
    }
    //分治
    int mid = (r + p) / 2;
    //递归调用
    MergeSort(A,p,mid);
    MergeSort(A,mid+1,r);
    //Cmbine
    Merge(A,p,mid,r);
}
调用:
int a[] = {1,3,5,7,8,2,3,5,6,9};
MergeSort(a,0,9);


分享到:
评论

相关推荐

    MoreWindows白话经典算法之七大排序第2版(高清)

    在第一版的基础上新加了对冒泡排序,直接插入排序,直接选择排序,希尔排序,归并排序,快速排序和堆排序这七种常用的排序方法的总结篇,方便大家复习,合适作为笔试面试前的复习资料。

    白话经典算法之七大排序

    对冒泡排序,直接插入排序,直接选择排序,希尔排序,归并排序,快速排序和堆排序这七种常用的排序方法进行了详细的讲解

    MoreWindows白话经典算法之七大排序(高清版)

    这是本人在研一上课时所整理的文档,包括冒泡排序,直接插入排序,直接选择排序,希尔排序,归并排序,快速排序和堆排序这七种常用的排序方法,这些文章不仅使我在考试中取了不错的成绩,也为后来顺利面过迅雷,腾讯...

    [网盘]MoreWindows白话经典算法之七大排序第2版(高清)

    在第一版的基础上新加了对冒泡排序,直接插入排序,直接选择排序,希尔排序,归并排序,快速排序和堆排序这七种常用的排序方法的总结篇,方便大家复习,合适作为笔试面试前的复习资料。

    经典算法之七大排序白话讲解第二版

    直接选择排序 希尔排序 归并排序 快速排序 堆排序等经典算法之七大排序白话讲解第二版

    MoreWindows白话经典算法之七大排序

    包括冒泡排序,直接 插入排序,直接选择排序,希尔排序,归并排序,快速排序和堆 排序这七种常用的排序方法,

    白话经典算法

    冒泡排序,直接插入排序,直接选择排序,希尔排序,归并排序,快速排序和堆排序这七种常用的排序方法的总结,方便大家复习,合适作为笔试面试前的复习资料

    计算机七大排序

    MoreWindows白话经典算法之七大排序 这是本人在研一上课时所整理的文档,包括冒泡排序,直接插入排序,直接选择排序,希尔排序,归并排序,快速排序和堆排序

    7大排序python实现(冒泡,快速,插入,希尔,选择,堆,归并)

    参考csdn博客专栏《白话经典算法》用python实现数据结构种常见的7种排序

    数据结构和算法必知必会的50个代码实现

    * 实现归并排序、快速排序、插入排序、冒泡排序、选择排序* 编程实现O(n)时间复杂度内找到一组数据的第K大元素 ## 二分查找 * 实现一个有序数组的二分查找算法* 实现模糊二分查找算法(比如大于等于给定值的第一个...

    50个必会的数据结构及算法实现源码

    问题:实现归并排序、快速排序、插入排序、冒泡排序、选择排序 问题:编程实现O(n)时间复杂度内找到一组数据的第K大元素 二分查找、散列表、字符串处理、二叉树、堆、图、回溯、分治、动态回归等。 资源中包括常用...

Global site tag (gtag.js) - Google Analytics