Consolexin's blog Consolexin's blog
首页
  • 算法基础

    • 图论
    • 字符串
    • 动态规划
    • 二分
    • 滑动窗口
    • 排序
  • Project

    • CppServer
  • 相关书籍

    • 现代C++编程
  • 书籍

    • SQL必知必会
    • MySQL必知必会
分类
标签
归档
GitHub (opens new window)

Consolexinhun

小学生
首页
  • 算法基础

    • 图论
    • 字符串
    • 动态规划
    • 二分
    • 滑动窗口
    • 排序
  • Project

    • CppServer
  • 相关书籍

    • 现代C++编程
  • 书籍

    • SQL必知必会
    • MySQL必知必会
分类
标签
归档
GitHub (opens new window)
  • 图论

  • 字符串

  • 动态规划

  • 二分

  • 滑动窗口

  • 排序

    • 简单排序
    • 希尔排序
    • 归并排序
      • 快速排序
      • 堆排序
    • 算法
    • 排序
    consolexinhun
    2021-12-14
    目录

    归并排序

    笔记

    将数组一分为二,分别将两个子数组有序,然后再合并两个有序子数组

    注意

    稳定排序

    #include<bits/stdc++.h>
    
    using namespace std;
    
    
    /**
     * 归并排序
     * */
    
    void merge(int a[], int left, int mid, int right);
    
    void merge_sort(int a[], int left, int right) {
        if(right <= left) {
            return ;
        }
    
        int mid = left + (right-left)/2;
        merge_sort(a, left, mid);
        merge_sort(a, mid+1, right);
        merge(a, left, mid, right);
    }
    
    void merge(int a[], int left, int mid, int right) {
        int temp[right-left+1];
        int k = 0;
        int i = left, j = mid+1;
        while(i <= mid && j <= right) {
            if(a[i] < a[j]) {
                temp[k++] = a[i++];
            }
            else{
                temp[k++] = a[j++];
            }
        }
        while(i <= mid) {
            temp[k++] = a[i++];
        }
        while(j <= right) {
            temp[k++] = a[j++];
        }
        assert(k == right-left+1);
        for(int t = 0; t < k; t++) {
            a[t+left] = temp[t];
        }
    }
    
    
    
    int main() {
        int a[] = {9, 3, 1, 4, 2, 7, 8, 6, 5};
    
        int len = sizeof(a)/sizeof(a[0]);
    
        merge_sort(a, 0, len-1);
    
        for(int i = 0; i < len; i++) {
            printf("%d%c", a[i], " \n"[i==len-1]);
        }
        return 0;
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60

    # 参考链接

    菜鸟教程 (opens new window)

    编辑 (opens new window)
    上次更新: 2025/05/21, 06:42:57
    希尔排序
    快速排序

    ← 希尔排序 快速排序→

    最近更新
    01
    6-其他操作
    05-20
    02
    4-联结
    05-20
    03
    7-管理
    05-20
    更多文章>
    Theme by Vdoing | Copyright © 2019-2025 Consolexinhun | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式
    ×