从零开始学习算法之归并排序[1](2.2归并排序)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零开始学习算法之归并排序[1](2.2归并排序)相关的知识,希望对你有一定的参考价值。
归并排序思想为将序列每相邻两个数字进行归并操作(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归并排序)的主要内容,如果未能解决你的问题,请参考以下文章