排序(快排 + 归并)

ARM架构下的SLAM部署避坑指南:香橙派AIpro与D435i深度相机的实战解析 本文详细解析了在ARM架构的香橙派AIpro开发板上部署SLAM算法并与Intel D435i深度相机配合的实战经验。内容涵盖系统配置、ROS编译、驱动安装、算法优化等关键步骤,提供了具体的避坑指南和性能调优技巧,帮助开发者在嵌入式平台上高效实现实时SLAM应用。 阅读详情

排序

快排

思路

  1. 确定分界点 x(左端点, 右端点, 中间值, 随机)
  2. 调整区间,使得所有小于等于x的数都在左半边, 所有大于等于x的数都在右半边
  3. 递归处理左右两段

题目

快速排序

给定你一个长度为 n n n 的整数数列。

请你使用快速排序对这个数列按照从小到大进行排序。

并将排好序的数列按顺序输出。

输入格式
输入共两行,第一行包含整数 n n n。

第二行包含 n n n 个整数(所有整数均在 1 ∼ 1 0 9 1∼10^{9} 1∼109 范围内),表示整个数列。

输出格式
输出共一行,包含 n n n 个整数,表示排好序的数列。

数据范围
1 ≤ n ≤ 100000 1≤n≤100000 1≤n≤100000
输入样例:

5
3 1 2 4 5

输出样例:

1 2 3 4 5

答案

#include<iostream>
#include<algorithm>

using namespace std;

const int N = 1000010;

int n;
int q[N];

void quick_sort(int q[], int l, int r) {
    if (l >= r) return ;

    int x = q[(l + r) >> 1];
    int i = l - 1, j = r + 1;
    while (i < j) {
        while (q[++i] < x);
        while (q[--j] > x);
        if (i < j) swap(q[i], q[j]);
    }
    quick_sort(q, l, j);
    quick_sort(q, j + 1, r);
}


int main() {
    scanf("%d", &n);
    for (int i = 0; i < n; i++) scanf("%d", &q[i]);

    quick_sort(q, 0, n - 1);

    for (int i = 0; i < n; i++) printf("%d ", q[i]);

}

归并排序

思路

  1. 找分界点 中点
  2. 递归排序左边和右边
  3. 归并两个数组

题目

归并排序

给定你一个长度为 n n n 的整数数列。

请你使用归并排序对这个数列按照从小到大进行排序。

并将排好序的数列按顺序输出。

输入格式
输入共两行,第一行包含整数 n n n。

第二行包含 n n n 个整数(所有整数均在 1 ∼ 1 0 9 1∼10^{9} 1∼109 范围内),表示整个数列。

输出格式
输出共一行,包含 n n n 个整数,表示排好序的数列。

数据范围
$1≤n≤100000 $
输入样例:

5
3 1 2 4 5

输出样例:

1 2 3 4 5

答案

#include<iostream>

using namespace std;

const int N = 1000010;

int n;
int q[N], temp[N];

void merge_sort(int q[], int l, int r ) {
    if (l >= r) return;

    int mid = l + r >> 1;
    merge_sort(q, l, mid), merge_sort(q, mid + 1, r);

    int k = 0, i = l, j = mid + 1;
    while (i <= mid && j <= r) {
        if (q[i] <= q[j]) temp[k ++] = q[i ++];
        else temp[k ++] = q[j++];
    }
    while (i <= mid) temp[k++] = q[i ++];
    while (j <= r) temp[k++] = q[j ++];

    for (int i = l, j = 0; i <= r; i++, j++) q[i] = temp[j];
}

int main() {
    scanf("%d", &n);
    for (int i = 0; i < n; i++) scanf("%d", &q[i]);

    merge_sort(q, 0, n - 1);

    for (int i = 0; i < n; i++) printf("%d ", q[i]);
    return 0;
}
计算机视觉教程2-3:图解双线性插值算法&最近邻插值算法 提出此算法的背景是基于图片的缩放,在图片缩放的过程中,实质上就是将原图像像素矩阵像素值,填到目标图像像素矩阵中,目标图像像素矩阵可能比原图像像素矩阵大(图片放大),也可能小(图片缩小)。我们假设图片的宽(WidthWidthWidth)和高(HeightHeightHeight)是按同比例缩放的,那么 srcXsrcWidth=dstXdstWidth\frac{srcX}{srcWidth}= \frac{dstX}{dstWidth}srcWidthsrcX​=dstWidthdstX​ ... 阅读详情

相关推荐

【Coze 扣子案例】第 23 期・商业篇:一键获取精准商机,自动化招标信息查询与分析

通过地区和项目类型等多维度组合查询全国招标信息网数据,实现招标公告的快速定位。自动解析招标公告内容,提取关键信息,并生成结构化摘要。帮助企业高效获取精准商机,提升市场竞争力,降低人工成本,解决 “信息过载” 与 “精准匹配难” 的双重问题。

weixin_72689845的博客 1928

acwing基础课——归并排序

acwing算法基础课二刷

qq_62417282的博客 863

Oracle MCP Server实战:自然语言如何重塑数据库交互体验

本文深入探讨了Oracle MCP Server如何通过自然语言交互技术革新数据库操作体验。作为Oracle数据库的革命性工具,MCP Server集成了先进的Text-to-SQL技术,允许用户使用自然语言直接查询数据库,大幅降低使用门槛。文章详细介绍了从环境搭建、实战案例到企业级部署的全流程,特别强调了中文自然语言处理能力和安全最佳实践,为DBA和开发者提供了从传统SQL到智能交互的转型指南。

u9v0w的博客 285

AcWing——归并排序

归并排序模板

weixin_73094970的博客 291

威联通改装飞牛fnOS全攻略:从刷机到Docker影视部署

NAS系统是家庭数字存储的核心,x86架构的威联通设备凭借通用引导和驱动支持,成为改装替代系统的理想平台。飞牛fnOS作为基于Debian的国产NAS系统,以简洁UI、内置Docker和影视墙以及硬件转码能力,吸引了大量玩家。通过U盘引导安装、BIOS调整、系统盘SSD部署,可实现系统切换;原机械硬盘可挂载为存储池,配合Docker部署下载、远程访问等容器,影视中心自动削刮海报墙,硬件转码保障4K播放。改装过程需注意引导失败、硬盘识别、核显驱动等问题。这套方案能让老旧威联通焕发新生,兼顾易用性与扩展性。本文

weixin_33585822的博客 775

【QGIS】利用“创建网格”功能实现区域等距分割与坐标转换实战

本文详细介绍了如何在QGIS中使用“创建网格”工具实现区域等距分割。通过实战演示,将北京市行政区划切割为150米正方形网格,并重点讲解了关键步骤:选择投影坐标系EPSG:3857以确保网格尺寸精确,以及将结果转换为常用的WGS84经纬度坐标。文章还涵盖了进阶技巧与常见问题解决方案,帮助用户高效完成空间网格化分析任务。

weixin_29232507的博客 96

AcWing--快速排序与归并排序

快速排序和归并排序

记得要努力变强 1250

300个fpga练手项目推荐

• 按键设置BPM,LED和蜂鸣器同步打拍(支持4/4、3/4拍)• 例:先实现DDR3控制器(基础),再构建视频处理流水线(集成)◦ 驱动小型e-Paper显示日期/时间(SPI接口,静态刷新)◦ 音频输入经FFT后,用LED柱状显示频率能量(8频段简化)◦ 通过HC-05模块接收手机指令,控制电机方向(前进/后退)• 随机点亮LED,用按钮响应,数码管显示反应时间(毫秒级)• 8个LED旋转闪烁,按钮停止后显示中奖编号(带减速动画)• 用4方向按键输入手势(如→→←↑),正确后点亮绿色LED。

qq_62784677的博客 7645

归并排序(Acwing)

合并过程中我们可以保证如果两个当前元素相等时,我们把处在前面的序列的元素保存在结果序列的前面,这样就保证了稳定性(例如举例中的5,一般来说先取左半段的5再取右半段的5),O(n):左指针扫描左半段,右指针扫描右半段,因此每个元素仅会被扫描一次。存成PII,即存a[i]和下标i,从而保证每个元素都不相同。2.递归排序:以中点为分界点的左右两段分别排序。//这里相当于(l+r)/2 步骤一。左半段:1 3 5 7 9。1.确定分界点:取区间的中点。右半段:2 4 5 8 10。

2302_79926174的博客 441

Apollo Planning决策规划算法代码详细解析 (2):Scenario执行

上一章节讲Scenario的决策逻辑,当确认当前Scenario后,本章节继续深入讲解在代码中,Scenario的执行过程。Scenario的Process()函数根据配置文件顺序执行stage,并判断目前处于哪个stage。当确认好stage后调用该stage对应的Process()函数,来进行具体的规划任务。 码字不易,喜欢的朋友们麻烦点个关注与赞。 在本文你将学到下面这些内容: Scenario的Process()函数的作用于调用方式; Scenario对象的初始化方法; 如何给每个Scen

自动驾驶Player的博客 5609

斑马算法优化变分模态分解ZOA-VMD数字信号去噪(优化K值 alpha值)【含Matlab源码 4887期】

斑马算法优化变分模态分解ZOA-VMD数字信号去噪(优化K值 alpha值) 完整的代码,包运行;运行操作视频见优快云资源!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 811

归并排序

归并排序 #include <iostream> using namespace std; const int N = 1000010; int n; int q[N], tmp[N]; void merge_sort(int q[], int l, int r) { //递归的终止情况 if (l >= r) return ; //第一步:分成子问题 int mid = (l + r)/2; //第二步:递归

hege1998的博客 197

nvidia系列教程-AGX-Orin linux源码下载编译

NVIDIA AGX Orin 是一款高性能的嵌入式计算平台,广泛应用于人工智能、自动驾驶、机器人等领域。为 AGX Orin 编译定制的 Linux 内核,可以更好地适应特定应用需求,增强系统的灵活性。本文将详细介绍如何下载、配置和编译适用于 AGX Orin 的 Linux 内核源码。本文介绍了如何为 NVIDIA AGX Orin 平台下载、配置和编译定制的 Linux 内核源码。通过编译和部署定制内核,您可以更好地控制系统的行为,并根据特定应用需求进行优化。

flypig has a dream! 1283

快排非递归/归并排序/排序总结

快排非递归+归并排序

lzf的博客 887

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【水调歌头·排序篇】--体验快排与归并的奥妙

我们在写归并排序题时候会发现都会有相同之处。但是对于不同的题,具体问题得具体分析。归并排序的空间复杂度:O(n),因为在合并过程中需要额外的空间来存储临时数组。时间复杂度为O(n log n)

2401_83157962的博客 1061

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

链表的快排和归并排序

链表快排 对一个单链表用快排的方式排序 快排的关键在于partition函数,因为单链表是不能倒序遍历的,因此不能通过头尾双指针向内夹的partition函数,而是用都是从头开始的双指针方式,具体的两种partition函数可以参考:快排的两种partition函数 这里链表快排和数组快排partition函数中关键的不同点在于:partition函数中遍历结束的方式,和递归结束的方式 # 链表快...

海晨威 1179

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【数据结构】快排之三路划分 + 文件归并排序

快排之三路划分 + 文件归并排序

2203_76003626的博客 1522

【初阶数据结构与算法】八大排序之非递归系列( 快排(使用栈或队列实现)、归并排序)

其实大致总结一下,如果递归的形式像前序遍历,那么我们才能使用栈来模拟它的行为,如果类似于中序和后序遍历就不行,根本原因还是前序遍历会先处理根,不需要左右子树的信息,而中序和后序遍历时,处理根就会需要左子树或者左右子树的信息,而栈只能模拟先处理根的情况。所以我们就可以写代码来模拟这个过程,首先将数组的一个元素划分为一组,然后两组两组进行合并,只不过将数组两组两组合并完之后,我们要将数组重新进行分组,变成两个元素划分为一组再进行合并,反复进行上面的操作,直到数组不能再划分。结论是不可以,那么这是为什么呢?

hdxbufcbjuhg的博客 3781

【左神3】归并排序与随机快排

【左神3】归并排序与随机快排 归并什么意思? 递归+合并 = 归并 归并排序的思想 每次都把数从中间一分为二,直到不能分了为止,然后从下往上,先排序后合并。 非归并排序的思想 原始n个数,第一层先让相邻的2个数排序,第二层让相邻的4个数排序,假设相邻数的个数为x,每加一层x以2倍增长,当相邻的x大于2n就排序完成了。 归并排序的时间复杂度 带入master公式。 (N) = 2T(N/2) + O(N) => O(N*logN) 非归并排序的时间复杂度 以最坏的打算来算,假设每一层左边都大于右边

yanchendage的博客 558

排序算法解析:快排,归并 (全)

快排(递归)和(非递归)、归并(递归)和(非递归)

MT_125的博客 1076

快排,堆排与归并排序

快排: Parition函数用于进行一次快排,本次快排将某个元素放在它应该呆在的位置pos。pos左侧全比它小,pos右侧全比它大。 Parition中,设置low指针与high指针,以待排元素为标杆,判断high指向元素是否大于待排元素,若小于则与low指向的元素交换,并切换到low指针。low指针此时指向刚交换过来的元素,其一定小于待排元素,然后low自加直到low指向的元素大于待排元素,...

weixin_34417635的博客 167

排序2-时间复杂度为O(nlogn)的算法 归并排序 快排

上一篇博文排序1主要讲的是关于评定算法性能的一些指标,以及时间复杂为O(n2)的排序算法。这一篇博文我重点讲述世家复杂度为O(nlogn)的两个经典算法—归并排序 和快排 关于这两个算法 网上的资料很多 在面试中也会经常会被问到(特别是快排),这里我结合自己的理解和总结,写的不好的地方 请多指教。 归并排序(MergeSort) 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算...

南国的技术栈 2553

分治实现快排与归并排序

下面的java程序的两个函数实现了快排与归并排序 public class Algorithm { public static void quickSort(int[] num, int i, int j){ if(i<j){ int q = i-1; int k = num[j]; for(int h = i; h<=j; h++){ if(n

独钓寒江雪 611

分治算法(三分快排 + 归并排序深入思维)万字

本文是 二分快排 + 归并排序 的深入学习,学习 三分快排思维,归并排序的策略一:降序思维,策略二:升序思维。 `策略一:`计算当前元素后面,有多少元素的比我小`nums[left] > nums[right],右部分个数` - `降序`重点降序,需求`[left] > [right, 最后]`。 `策略二:`计算当前元素之前,有多少元素的比我大`nums[right] < nums[left],左部分个数` - `升序`重点升序,需求`[i, mid] > [j]`。

weixin_64609308的博客 1246

十大排序算法(详细快排和归并)

总结四大排序算法,并对算法领域使用较多的快速排序和归并排序作详细介绍和分析

Rockivy的博客 1032

分别使用快排和归并排序对链表进行排序

题目描述:因为要求时间复杂度为O(nlogn),而时间复杂度为O(nlogn)的排序算法有快排,归并排序和堆排。

学习永无止境 339
上一篇: 数据结构 线段树
下一篇: 算法笔记 离散化(整数离散化)
ghost_him
博客等级 码龄6年 598粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值