2-路归并排序的原理是,将序列两两分组,将序列归并为[n/2]个组,组内单独排序;
然后将这些组再两两归并,生成[n/4]个组,组内再单独排序;
以此类推,直到只剩下一个组为止。时间复杂度为O(nlogn)。
#include <iostream>
using namespace std;
const int maxn = 100;
//归并两个有序区间
void merge(int a[], int L1, int R1, int L2, int R2){
int i = L1, j = L2;
cout << L1 << " " << R1 << " " << L2 << " " << R2 << endl; //第一次进去是 0 0 1 1
int temp[maxn], index = 0; //临时存放合并后的数组,index为其下标
while(i <= R1 && j <= R2){
if(a[i] <= a[j]){
temp[index
2-路归并排序(递归)与 (非递归)
最新推荐文章于 2022-07-11 21:02:58 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)