码迷,mamicode.com
首页 > 编程语言 > 详细

从零开始学习算法之归并排序[1](2.2归并排序)

时间:2017-10-24 20:44:21      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:操作   代码   开始   归并   ++   class   包含   bsp   div   

归并排序思想为将序列每相邻两个数字进行归并操作(merge),形成floor(n/2)个序列,排序后每个序列包含两个元素将上述序列再次归并,形成floor(n/4)个序列,每个序列包含四个元素重复步骤2,直到所有元素排序完毕。

下列代码为单次归并的函数,可作为模板用于代码中。

PS:其中前段为第p位到第q位,后段为第q+1位到第r位。

 1 void Merge(int p,int q,int r){
 2     int n1 = q - p + 1;
 3     int n2 = r - q;
 4     long long L[n1],R[n2];
 5     for(int i = 0;i < n1;i++) L[i] = A[i+p];
 6     for(int i = 0;i < n2;i++) R[i] = A[i+q+1];
 7     L[n1] = 100000000;R[n2] = 100000000;
 8     int i = 0;int j = 0;
 9     for(int k = p;k <= r;k++){
10             if(L[i] < R[j]) A[k] = L[i++];
11             else A[k] = R[j++];
12     }
13 }

 

从零开始学习算法之归并排序[1](2.2归并排序)

标签:操作   代码   开始   归并   ++   class   包含   bsp   div   

原文地址:http://www.cnblogs.com/Morizen/p/7725152.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!