归并排序的思想

简介: 归并排序的思想

归并排序(Mergesort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(DivideandConquer)的一个非常典型的应用。

代码实现:

#include <iostream>
#include <vector>
using namespace std;
void mergeSort(vector<int>& nums, int l, int r) {
    if (l >= r) {
        return;
    }
    int mid = (l + r) / 2;
    mergeSort(nums, l, mid);
    mergeSort(nums, mid + 1, r);
    vector<int> temp(r - l + 1);
    int i = l, j = mid + 1, k = 0;
    while (i <= mid && j <= r) {
        if (nums[i] < nums[j]) {
            temp[k++] = nums[i++];
        } else {
            temp[k++] = nums[j++];
        }
    }
    while (i <= mid) {
        temp[k++] = nums[i++];
    }
    while (j <= r) {
        temp[k++] = nums[j++];
    }
    for (int i = l; i <= r; ++i) {
        nums[i] = temp[i - l];
    }
}
int main() {
    vector<int> nums {5, 1, 9, 3, 7, 4, 8, 6, 2};
    mergeSort(nums, 0, nums.size() - 1);
    for (auto num : nums) {
        cout << num << " ";
    }
    return 0;
}
相关文章
|
存储 Ubuntu 应用服务中间件
【Nginx】centos和Ubuntu操作系统下载Nginx配置文件并启动Nginx服务详解
【Nginx】centos和Ubuntu操作系统下载Nginx配置文件并启动Nginx服务详解
243 1
|
10月前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
420 13
|
JavaScript Java 测试技术
基于SpringBoot+Vue的“期待相遇”图书借阅系统的详细设计和实现
基于SpringBoot+Vue的“期待相遇”图书借阅系统的详细设计和实现
90 2
|
C语言
各种运算符的介绍,超详解
各种运算符的介绍,超详解
308 0
|
Kubernetes 负载均衡 安全
k8s入门-集群组件介绍
k8s入门-集群组件介绍
378 0
|
编译器 C语言
【C语言进阶】字符函数及字符串函数,带你掌握核心用法并模拟实现(1)——strlen,strcpy,strcmp
【C语言进阶】字符函数及字符串函数,带你掌握核心用法并模拟实现(1)——strlen,strcpy,strcmp
442 1
|
存储 SQL 运维
MySQL 迁移到 OceanBase 数据库
MySQL 迁移到 OceanBase 数据库
1025 0
|
网络协议 关系型数据库 MySQL
网络协议与攻击模拟-08-TCP连接-四次挥手
网络协议与攻击模拟-08-TCP连接-四次挥手
86 0
|
设计模式 Java 开发工具
JAVA基础小项目 - 坦克大战(上)
JAVA基础小项目 - 坦克大战(上)
373 0
|
Windows
Windows 技巧篇-设置我的漂亮桌面
Windows 技巧篇-设置我的漂亮桌面
257 0
Windows 技巧篇-设置我的漂亮桌面