归并排序模板

#include<bits/stdc++.h>
using namespace std;

void merge(int* a, int low, int mid, int hight)  //合并函数
{
    int* b = new int[hight - low + 1];  //用 new 申请一个辅助函数
    int i = low, j = mid + 1, k = 0;    // k为 b 数组的小标
    while (i <= mid && j <= hight)
    {
        if (a[i] <= a[j])
        {
            b[k++] = a[i++];  //按从小到大存放在 b 数组里面
        }
        else
        {
            b[k++] = a[j++];
        }
    }
    while (i <= mid)  // j 序列结束,将剩余的 i 序列补充在 b 数组中
    {
        b[k++] = a[i++];
    }
    while (j <= hight)// i 序列结束,将剩余的 j 序列补充在 b 数组中
    {
        b[k++] = a[j++];
    }
    k = 0;  //从小标为 0 开始传送
    for (int i = low; i <= hight; i++)  //将 b 数组的值传递给数组 a
    {
        a[i] = b[k++];
    }
    delete[]b;     // 辅助数组用完后,将其的空间进行释放(销毁)
}
void mergesort(int* a, int low, int hight) //归并排序
{
    if (low < hight)
    {
        int mid = (low + hight) / 2;
        mergesort(a, low, mid);          //对 a[low,mid]进行排序
        mergesort(a, mid + 1, hight);    //对 a[mid+1,hight]进行排序
        merge(a, low, mid, hight);       //进行合并操作
    }
}

int main()
{
    int n;
    cin>>n;
    int a[n];
    for(int i=0; i<n; i++){
        cin>>a[i];
    }
    mergesort(a,0,n-1);
    for(int i=0; i<n; i++){
        cout<<a[i]<<" ";
    }
    cout<<endl;
    return 0;
}

输入样例:
5
3 1 2 4 5
输出样例:
1 2 3 4 5

相关推荐

  1. 归并排序模板

    2023-12-31 19:30:02       51 阅读
  2. 【算法】归并排序模板

    2023-12-31 19:30:02       38 阅读
  3. AcWing 787. 归并排序模板题详解)

    2023-12-31 19:30:02       56 阅读
  4. 线段树、树状数组、归并排序模板

    2023-12-31 19:30:02       35 阅读
  5. 归并排序

    2023-12-31 19:30:02       45 阅读
  6. 归并排序

    2023-12-31 19:30:02       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-31 19:30:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-31 19:30:02       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-31 19:30:02       82 阅读
  4. Python语言-面向对象

    2023-12-31 19:30:02       91 阅读

热门阅读

  1. llvm后端之指令选择源码分析

    2023-12-31 19:30:02       57 阅读
  2. element ui级连选择,lazyLoad选择地区

    2023-12-31 19:30:02       59 阅读
  3. MongoDB聚合:$replaceRoot

    2023-12-31 19:30:02       54 阅读
  4. EasyExcel简单合并单元格数据工具类

    2023-12-31 19:30:02       72 阅读
  5. couldn‘t find “libmmkv.so“ android8.1.0 Nexus 5X

    2023-12-31 19:30:02       75 阅读
  6. GTK 使用 glade 4 正确书写的方法

    2023-12-31 19:30:02       61 阅读
  7. Element Plus 的 el-table 组件合并不规律的行

    2023-12-31 19:30:02       55 阅读
  8. Arm CCA机密计算扩展

    2023-12-31 19:30:02       65 阅读
  9. 网络安全试题——附答案

    2023-12-31 19:30:02       62 阅读