关于归并排序:

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/ab71b5adb111405891ccb8eb3254878f.png)

复制代码
return 语句开始之后,会执行之前剩余遗留下的语句和状态

#include<bits/stdc++.h>
using namespace std;

void merge_sort(int l,int r){
    if(l == r) return ;
    int mid = l + r >> 1;
    cout << l << " " << mid << "      ";
    cout << mid + 1 << " " << r << endl;
   
    
    merge_sort(l,mid);
    
    merge_sort(mid + 1,r);
    
    cout << "hello world!"  << l << r << endl;
    
    // return 之后不是从头执行一遍程序
    // return 之后是执行上一次没有执行的状态语句
}

int main(){
    int l = 1,r = 5;
    merge_sort(l,r);
}


我们的目的就是先排好1 2 然后排1 2 3 然后去排4 5 然后去排两个序列分别是1 2 3 和 4 5这两个序列,这种递归程序天然的帮我们实现了这个过程

下面给出完整代码:

复制代码
#include <bits/stdc++.h>
using namespace std;
int n;
void merge_sort(vector<int>& a,int l,int r){
    if(l >= r){
        return ;
    }
    int mid = l + r >> 1;
    merge_sort(a,l,mid);
    merge_sort(a,mid + 1,r);
    int i = l,j = mid + 1;
    vector<int> temp;
    while(i <= mid && j <= r){
        if(a[i] <= a[j]) temp.push_back(a[i ++]);
        else temp.push_back(a[j ++]);
    }
    while(i <= mid) temp.push_back(a[i ++]);
    while(j <= r) temp.push_back(a[j ++]);

    for(int i = l,k = 0;i <= r;i ++){
        a[i] = temp[k ++];
    }
}
int main(){
    cin >> n;
    std::vector<int> v(n);
    for(auto &x: v) cin >> x;
    merge_sort(v,0,n - 1);
    for(auto x : v) cout << x << " ";
    return 0; 
} 
相关推荐
LuminousCPP4 小时前
数据结构 - 线性表第四篇:C 语言通讯录优化升级全记录(踩坑 + 思考)
c语言·开发语言·数据结构·经验分享·笔记·学习
AI算法沐枫5 小时前
深度学习python代码处理科研测序数据
数据结构·人工智能·python·深度学习·决策树·机器学习·线性回归
m0_629494737 小时前
LeetCode 热题 100-----26.环形链表 II
数据结构·算法·leetcode·链表
壹号用户7 小时前
用队列实现栈
数据结构·算法
做人求其滴7 小时前
面试经典 150 题 380 274
c++·算法·面试·职场和发展·力扣
daad7777 小时前
记一组无人机IMU传感器数据
算法
计算机安禾7 小时前
【c++面向对象编程】第42篇:模板特化与偏特化:为特定类型定制实现
开发语言·c++·算法
小O的算法实验室7 小时前
2026年KBS,流形感知强化学习差分进化算法+不规则3D无人机路径规划,深度解析+性能实测
算法·智能算法·智能算法改进
玖釉-8 小时前
C++ 中的循环语句详解:while、do...while、for、嵌套循环与循环控制
开发语言·c++·算法
不做无法实现的梦~8 小时前
运动控制系统复习一览-----常考题目总结版本
算法