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

算法分析--分治--2.归并排序

给定一个长度为n的整数数组nums,要求必须使用【归并排序】的方法将该数组升序排序。

1.1 归并排序

  • 分:将数组分成多个小数组,直到只有一个元素。
  • 治:自底向上合并小数组(merge)

1.2 代码

将 arr [n1+n2] 数组分为两个小数组:L [n1], R [n2]

  • merge算法:
  • i , j , k 三个指针分别指向三个数组
一个例子
int a[] = {5, 2, 4, 7, 1, 3, 2, 6};
sort(a, 0, 7);

sort里面要合并的不仅是只有两个元素的数组,所以merge也不能直接比较大小,然后考虑交不交换。
image

#include<iostream>
using namespace std;void merge(int arr[], int l, int r, int mid) {int n1 = mid - l + 1;  int n2 = r - mid;     // 先吧arr数组的 l-mid,mid+1-r 部分拷贝到L,R数组int* L = new int[n1];  int* R = new int[n2]; for (int i = 0; i < n1; i++) {L[i] = arr[l + i];}for (int j = 0; j < n2; j++) {R[j] = arr[mid + 1 + j];  }// 再用三个指针合并L R数组,拷回到arrint i = 0, j = 0;  int k = l;         while (i < n1 && j < n2) {if (L[i] <= R[j]) {arr[k] = L[i];i++;} else {arr[k] = R[j];j++;}k++; }while (i < n1) {arr[k] = L[i];i++;k++;}while (j < n2) {arr[k] = R[j];j++;k++;}delete[] L;delete[] R;
}void sort(int num[], int l, int r) {if (l < r) { // 递归终止条件int mid = (l + r) / 2;  sort(num, l, mid);      sort(num, mid + 1, r);  merge(num, l, r, mid);  }
}int main() {int n;cin >> n;int num[n];  for (int i = 0; i < n; i++) {cin >> num[i];}sort(num, 0, n - 1);  for (int i = 0; i < n; i++) {cout << num[i] << " ";}return 0;
}
http://www.fuzeviewer.com/news/528/

相关文章:

  • Vue2随笔-251027
  • Java: Jdk17 异步或同步或并行发邮件
  • 噪声点验证码的图像处理与识别思路
  • 1027
  • 关系运算符逻辑运算符
  • 《程序员修炼之道》 阅读笔记三
  • 第四篇:docker底层原理
  • 关于springboot+Servlet报错404的问题
  • Codechef Painting Tree 题解 [ 蓝 ] [ 树形 DP ] [ 概率期望 ] [ 分类讨论 ]
  • 【CI130x 离在线】如何运行 curl 脚本
  • 这才是真正的AI NAS!极空间私有云Z2Ultra评测
  • 新东方第三节课名言作文
  • 十月阅读_3
  • 中考_体育
  • 常见问题处理 --- phpstudy启动mysql失败
  • 20232308 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 【密码学实战】openHiTLS PKCS12命令行程序: PKCS12文件生成与解析
  • 「CTSC2017-游戏」题解
  • vue3 vue3-form-element表单生成工具 输入框增加后缀
  • 20232402 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 掘金2025年:数字化商业浪潮下,如何选对平台与伙伴?一站式多商户商城系统推荐榜发布,多商户商城代理招募/多商户项目合伙人加盟/一站式开店代理项目加盟
  • 为医疗器械行业搭建“数字桥梁”,破解协同效率与合规难题
  • PostgreSQL 服务版
  • 20232307 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 2025年10月办公家具公司评价榜:基于真实数据的权威推荐清单
  • vue+antv/x6项目使用问题
  • 《程序员修炼之道:从小工到专家》前五分之一观后感
  • 坐标系与投影关系
  • 用gdb的动态视角看ret2text的实现
  • 1027随笔