当前位置: 首页 > news >正文

归并排序模板

模板在文末,以下步骤方便理解记忆。

先贴一张快速排序模板步骤,用于对比记忆

归并排序步骤

(0)如果数组左边界L ≥ 数组右边界,则不需要排序,直接return。

(1)直接取数组正中间的数,即 mid = (L+R) / 2为边界。

(2)先递归,对 L~mid ,mid+1 ~ R 这两个区间的数组调用归并排序函数。

(3)对于每次归并,它的面前有两个排好序的数组,即 [ L, mid ] 和 [ mid+1, R ],接下来需要把这两个数组合为另一个有序的数组。

具体操作是采用双下标指针,首先令 i = L,j = mid + 1(即两个数组的左边界)

接着,让q[ i ]和q[ j ]中更小的那个先放进 temp 数组里,然后 i++ 或 j++,以此类推。

当其中一个下标指针到达末端时,直接将另一个数组原封不动的拷贝进 temp 数组里。

(4)最后把 temp 数组拷贝到 q 数组中。(这一步容易写错

#include<iostream>
using namespace std;const int N = 100010;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 i = l, j = mid+1, k = 0;while(i <= mid && j <= r) //对应步骤(3),而且当两个数组的指针都没有越界时才这么做{if(q[i] < q[j]) temp[k++] = q[i++];else            temp[k++] = q[j++];}while(i <= mid)     temp[k++] = q[i++]; //如果i没有越界,则将i后面的原封不动地拷贝进去while(j <= r)       temp[k++] = q[j++]; //如果j没有越界,则将j后面拷贝进去//q和temp数组的范围不同,因此需要两个变量i,j//         注意不是i <= nfor(int i=l, j=0; i <= r; ++i, ++j) q[i] = temp[j]; //步骤(4),注意写法
}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;
}

 

http://www.lryc.cn/news/286188.html

相关文章:

  • 【NVIDIA】Jetson Orin Nano系列:安装 Qt6、firefox、jtop、flameshot
  • Fastapi+Jsonp实现前后端跨域请求
  • MacOS受欢迎的数据库开发工具 Navicat Premium 15 中文版
  • helm---自动化一键部署
  • 求助帖(setiosflags)的左右对齐问题:
  • 升级8.0:民生手机银行的“内容解法”
  • Kubernetes多租户实践
  • 【GEE】GEE反演地表温度相关问题说明(空洞、Landsat9数据集等)
  • 【蓝桥备赛】数组分割——组合数学?
  • iphone5s基带部分电源部分主主电源供电及
  • 【每日一题】按分隔符拆分字符串
  • spawn_group_template | spawn_group | linked_respawn
  • 软考系分之计算机网络规划设计、综合布线、RAID和网络存储等
  • 使用ElEment组件实现vue表单校验空值
  • processing集训day01
  • java面试——juc篇
  • CSS 实现卡片以及鼠标移入特效
  • 芯课堂 | SWM34S系列驱动TFT-LCD显示模组应用基本注意事项
  • java8 列表通过 stream流 根据对象属性去重的三种实现方法
  • 鸿蒙开发DevEco Studio Setup 工具认识及使用
  • 程序员裁员潮:技术变革下的职业危机
  • Cesium快速入门
  • Android.mk和Android.bp的区别和转换详解
  • 卡尔曼滤波器原理By_DR_CAN 学习笔记
  • 013 异常
  • 微服务Spring Cloud架构详解
  • 推荐一一款小众黑科技工具,低调使用建议收藏
  • HiP框架:多AI模型联手,助力机器人驾驭复杂规划大局
  • 关于OC中变量相关知识点
  • 机器学习分类模型评价指标总结(准确率、精确率、召回率、Fmax、TPR、FPR、ROC曲线、PR曲线,AUC,AUPR)