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

AcWing 787. 归并排序——算法基础课题解

AcWing 787. 归并排序

文章目录

        • 题目描述
        • C++
        • Go
        • 模板

题目描述

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

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

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

输入格式

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

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

输出格式

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

数据范围

1≤n≤100000

输入样例

5
3 1 2 4 5

输出样例

1 2 3 4 5
C++
#include <iostream>using namespace std;const int N = 1e5 + 10;int tmp[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]) tmp[k++] = q[i++];else tmp[k++] = q[j++];}while (i <= mid) tmp[k++] = q[i++];while (j <= r) tmp[k++] = q[j++];for (i = l; i <= r; i++) q[i] = tmp[i - l];
}int main() {int n;cin >> n;int q[N];for (int i = 0; i < n; i++) cin >> q[i];merge_sort(q, 0, n - 1);for (int i = 0; i < n; i++) cout << q[i] << " ";return 0;
}
Go
package mainimport "fmt"const N = 1e5 + 10var tmp = make([]int, N)func mergeSort(arr []int, l, r int) {if l >= r {return}mid := (l + r) >> 1mergeSort(arr, l, mid)mergeSort(arr, mid+1, r)k := 0i := lj := mid + 1for i <= mid && j <= r {if arr[i] <= arr[j] {tmp[k] = arr[i]i++} else {tmp[k] = arr[j]j++}k++}for i <= mid {tmp[k] = arr[i]i++k++}for j <= r {tmp[k] = arr[j]j++k++}for i := l; i <= r; i++ {arr[i] = tmp[i-l]}
}func main() {var n intfmt.Scanf("%d", &n)arr := make([]int, N)for i := 0; i < n; i++ {fmt.Scanf("%d", &arr[i])}mergeSort(arr, 0, n-1)for i := 0; i < n; i++ {fmt.Printf("%d ", arr[i])}
}
模板
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]) tmp[k ++ ] = q[i ++ ];else tmp[k ++ ] = q[j ++ ];while (i <= mid) tmp[k ++ ] = q[i ++ ];while (j <= r) tmp[k ++ ] = q[j ++ ];for (i = l, j = 0; i <= r; i ++, j ++ ) q[i] = tmp[j];
}
http://www.lryc.cn/news/331706.html

相关文章:

  • 力扣1379---找出克隆二叉树的相同节点(Java、DFS、简单题)
  • FLink学习(三)-DataStream
  • Failed to resolve import “Home/components/HomeNew.vue“. Does the file exist?
  • 《价值》-张磊-高瓴资本-3-建立人脉和信任;顺应趋势,把握机遇;
  • 游戏引擎中的物理应用
  • 复现k8s黄金票据学习
  • 08-JavaScript BOM定时器及JS动画
  • 边缘计算盒子与云计算:谁更适合您的业务需求?
  • 浅聊什么是Redis?
  • java算法day43 | ● 1049. 最后一块石头的重量 II ● 494. 目标和 ● 474.一和零
  • 练气第六天
  • 认识 Redis 与 分布式
  • Linux初学(十二)AWK进阶
  • 文字识别 Optical Character Recognition,OCR CTC STN
  • 四、MySQL读写分离之MyCAT
  • 通讯录项目实现
  • xss相关知识点与绕过思路总结
  • 深入解析语言模型:原理、实战与评估
  • Elasticsearch 的索引优化常规项
  • 【JavaParser笔记01】JavaParser解析Java源代码中的类信息(javadoc注释、类​​​​​​​名称)
  • Stable Diffusion扩散模型【详解】小白也能看懂!!
  • 关于rabbitmq的prefetch机制
  • 机器学习介绍
  • OpenCV4.9开发之Window开发环境搭建
  • DDD 中的实体和值对象有什么区别?
  • 算法-最值问题
  • Go 性能压测工具之wrk介绍与使用
  • 数学思想论(有目录)
  • C++的并发世界(五)——线程状态切换
  • C语言——指针