归并排序核心代码

news/2025/3/21 10:49:12/

核心:

void merge(int a[],int l,int r){
    if(l>=r) return;
    int mid = l+r>>1;
    merge(a,l,mid);//先递归再归并 
    merge(a,mid+1,r);

    
    int t=0;
    //左右半段的起点 
    int i=l,j=mid+1;
    while(i <= mid && j <= r){
        if(a[i] <= a[j]) res[t++] = a[i++];
        else res[t++] = a[j++];
    } 

    //如果还有剩余
    while(i<=mid){
        res[t++] = a[i++];
    } 
    while(j<=r){
        res[t++] = a[j++];
    }

    //先左再右,每一次排好序的都是左半段
    for(int i=l,j=0;i<=r;i++,j++){
        a[i] = res[j];//为什么呢 
    }

    

#include<algorithm>
#include<iostream>
#include<cstring>
#include<queue>
#include<cmath>using namespace std;int n;
int a[1000];
int res[1000];void merge(int a[],int l,int r){if(l>=r) return;int mid = l+r>>1;merge(a,l,mid);//先递归再归并 merge(a,mid+1,r);int t=0;//左右半段的起点 int i=l,j=mid+1;while(i <= mid && j <= r){if(a[i] <= a[j]) res[t++] = a[i++];else res[t++] = a[j++];} //如果还有剩余while(i<=mid){res[t++] = a[i++];} while(j<=r){res[t++] = a[j++];}for(int i=l,j=0;i<=r;i++,j++){a[i] = res[j];//为什么呢 }} int main()
{cin>>n;for(int i=0;i<n;i++){cin>>a[i];}merge(a,0,n-1);for(int i=0;i<n;i++){cout<<a[i]<<' ';}return 0;
}

http://www.ppmy.cn/news/1413222.html

相关文章

如何从零开始训练一个语言模型

如何从零开始训练一个语言模型 #mermaid-svg-gtUlIrFtNPw1oV5a {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-gtUlIrFtNPw1oV5a .error-icon{fill:#552222;}#mermaid-svg-gtUlIrFtNPw1oV5a .error-text{fill:#5522…

LeetCode110:平衡二叉树

题目描述 给定一个二叉树&#xff0c;判断它是否是 平衡二叉树 解题思想 使用递归依次计算左子树的高度和右子树的高度 代码 class Solution { public:int height(TreeNode* node) {if (node nullptr) return 0;int leftT height(node->left);if (leftT -1) return -1;…

C++ switch 语句 范围语法

switch 语句通常用于处理离散的值&#xff0c;而不是范围。不过&#xff0c;可以通过 case 中的逻辑或条件来实现类似范围的效果。 switch (tps) {case 6 ... 7:qDebug() << "HttpCount tps limit >5";break;case 8 ... 9:qDebug() << "HttpCou…

Linux IPC-Daemon: 工业级通信的守护者

引言 在Linux系统中&#xff0c;进程间通信&#xff08;Inter-Process Communication, IPC&#xff09;是系统编程的基础之一。IPC机制允许运行在同一个系统上的进程之间共享数据和信息。一个专门设计用于此任务的后台服务程序即为IPC-Daemon。这种守护进程在工业自动化、服务…

【iOS ARKit】Web 网页中嵌入 AR Quick Look

在支持 ARKit 的设备上&#xff0c;iOS 12 及以上版本系统中的 Safari浏览器支持 AR Quick Look&#xff0c; 因此可以通过浏览器直接使用3D/AR 的方式展示 Web 页面中的模型文件&#xff0c;目前 Web 版本的AR Quick Look 支持USDZ 格式文件。苹果公司有一个自建的3D模型示例库…

同步压缩理论

参考 在频率方向进行能量重新分配&#xff08;分配到中心&#xff09; 时频重排

leetcode209--长度最小的子数组

1. 题意 找到最小满足和大于 t a r g e t target target的子数组长度。 长度最小的子数组 2. 题解 2.1 滑动窗口 class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {int l 0;int sum 0;int sz nums.size();int ans INT_MAX;for (…

DeepFM。FM(Factorization Machine,因子分解机)。大规模稀疏矩阵。协同过滤方法。

目录 DeepFM。 FM(Factorization Machine,因子分解机)。 大规模稀疏矩阵中的特征组合问题。