归并排序模板

有时候快排/归并之类并不简简单单只是排序,比如快排可以求第k大,归并在部分已排序的情况下效率较高不容易被卡~

复制代码
#include <bits/stdc++.h>
using namespace std;
void merge(int a[], int l, int r, int mid)
{
    int aux[r-l+1],i,j,k;
    for(k=l;k<=r;k++)aux[k-l]=a[k];//因为aux 数组只开到r-l+1,所以必须偏移一下才能存的了 
    i=l,j=mid+1;//i为左半截数组的起始位置 j为右半截数组的起始位置 k为第三个指针
    for(k=l;k<=r;k++)
    {
        if(i>mid)//左半截已经用完了,剩下的全用右半截填充 
        {
            a[k]=aux[j-l];
            j++;
        }
        else if(j>r)//同上 
        {
            a[k]=aux[i-l];
            i++;
        }
        else if(aux[i-l]>aux[j-l])
        {
            a[k]=aux[j-l];
            j++;
        }
        else
        {
            a[k]=aux[i-l]; 
            i++;
        }
     } 
}
void merge_sort(int a[], int l,int r)
{
    if(l>=r)return;
    int mid=(l+r)/2;
    merge_sort(a,l,mid);
    merge_sort(a,mid+1,r); 
    merge(a,l,r,mid);
}
int main()
{
    int m[10]={0,4,3,1,8,7,9,6,5,2};
    merge_sort(m,0,9);
    int i; 
    for(i=0;i<=9;i++)cout<<m[i]<<' ';
    return 0;
}
复制代码

 

posted @   脂环  阅读(131)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示
主题色彩