首页 > 编程语言 >归并排序--C++

归并排序--C++

时间:2024-07-17 09:55:20浏览次数:19  
标签:归并 abc -- C++ int 有序 序列 include

       归并排序是建立在归并操作上的一种有效,稳定的排序算法,该算法是采“分而自治”用的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。

​图片来源于网络

核心代码:

void abc(int x[],int q,int p){
    if(q>=p)return;
    int m=q+p>>1;
    abc(x,q,m);
    abc(x,m+1,p);
    int k=0;
    int i=q,j=m+1;
    while(i<=m&&j<=p){
        if(x[i]<=x[j])y[k++]=x[i++];
        else y[k++]=x[j++];
    }
    while(i<=m)y[k++]=x[i++];
    while(j<=p)y[k++]=x[j++];
    for(i=q,j=0;i<=p;i++,j++)
    x[i]=y[j];
}

完整代码:

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=1e5+100;
int x[N],y[N];
void abc(int x[],int q,int p){
    if(q>=p)return;
    int m=q+p>>1;
    abc(x,q,m);
    abc(x,m+1,p);
    int k=0;
    int i=q,j=m+1;
    while(i<=m&&j<=p){
        if(x[i]<=x[j])y[k++]=x[i++];
        else y[k++]=x[j++];
    }
    while(i<=m)y[k++]=x[i++];
    while(j<=p)y[k++]=x[j++];
    for(i=q,j=0;i<=p;i++,j++)
    x[i]=y[j];
}
int main(){
    int n;
    cin>>n;
    int i,j;
    for(i=0;i<n;i++) cin>>x[i];
    abc(x,0,n-1);
    for(i=0;i<n;i++){
        cout<<x[i]<<' ';
    }
}

标签:归并,abc,--,C++,int,有序,序列,include
From: https://blog.csdn.net/2301_81266471/article/details/140459029

相关文章

  • 自己实现sprintf功能,用于把三个float转换成字符串格式,速度比sprintf快了20倍
     float转字符串使用sprintf太慢了,自己实现sprintf功能,用于把三个float转换成字符串格式,速度比sprintf快了20倍!运行结果如下图:例程:#include<stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>#defineRUN_COUNT10000000//运行次数/*实现sprin......
  • 开发基础笔记
    1、Springboot2.0以后默认的数据库连接池是哪个? Springboot2.0以后默认的数据库连接池是哪个SpringBoot2.0后默认的数据库连接池是HikariCP。HikariCP是一个高性能的数据库连接池,它的性能远远超过其他传统的数据库连接池,如C3P0、DBCP和Tomcat的连接池。如果......
  • 【python】PyQt5的窗口界面的各种交互逻辑实现,轻松掌控图形化界面程序
    ✨✨欢迎大家来到景天科技苑✨✨......
  • VMware Cloud Director Availability 4.7.2 | 灾难恢复和迁移 | DRaaS
    VMwareCloudDirectorAvailability4.7.2|灾难恢复和迁移|DRaaSOnboarding&DisasterRecoveryServices请访问原文链接:https://sysin.org/blog/vmware-cloud-director-availability-4/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgVMwareCloudDirectorA......
  • 【App渗透】BurpSuite插件-Brida 2024最新自动加解密Custom plugins演示
    文章目录前言一、测试app的客户端和服务端二、BurpSuite设置代理三、反编译apk文件四、编写brida/fridahook脚本五、Customplugins自动加解密六、本期送书《二进制安全基础》如何领书总结前言之前有写过如何安装brida的文章和视频讲解,大家感兴趣的可以看看之前......
  • 数据集
    水下传感器数据集UnderWaterSensorNetworkMarineRoboticsDatasets http://marine.acfr.usyd.edu.au/datasets/UnderwaterCavesSonarandVisionDataSet http://cirs.udg.edu/caves-dataset/RadishDataset http://radish.sourceforge.net/DynTexdataset,Dyntex++D......
  • 从黑格尔《精神现象学》的视角去看待AI时代的来临(二)
    黑格尔的《精神现象学》是一部描绘意识进化的哲学巨著,展示了意识从感性确定性到绝对知识的过程。这一进程通过对自我和世界的反思与否定,逐步提升认知水平。借助黑格尔的哲学框架,我们可以对AI时代的来临进行深刻分析,从感性阶段到高级的精神阶段,逐步探讨AI技术在各个层面的发展及......
  • [1034] Locating an image within a specific area using pyautogui
    LocatinganimagewithinaspecificareaofthescreenusingPyAutoGUIcanbedoneasfollows:UsingPyAutoGUI’slocateOnScreenFunction:PyAutoGUIprovidesabuilt-infunctioncalledlocateOnScreenthatallowsyoutofindthepositionofanimageonthe......
  • java中用高德工具测试两点的距离
    文章讲述了如何在Java中利用DistinctUtil工具类通过高德地图API获取两个地理位置之间的驾车距离,涉及经纬度处理、URL构建、HTTP请求和JSON解析过程。摘要由CSDN通过智能技术生成  代码如下:StringstartLongitude=entity.getLONGITUDE();//起点(当前位置)经度......
  • Pytorch的编译新特性TorchDynamo的工作原理和使用示例
    在深度学习中,优化模型性能至关重要,特别是对于需要快速执行和实时推断的应用。而PyTorch在平衡动态图执行与高性能方面常常面临挑战。传统的PyTorch优化技术在处理动态计算图时效果有限,导致训练时间延长和模型性能不佳。TorchDynamo是一种为PyTorch设计的即时(JIT)编译器,通过在运行时......