算法基础学习|02归并排序——分治

一、思路

(1)确定分界点:mid=(l+r)/2 ------这里和快排不同

(2)递归排序(left right)

(3)归并------合二为一

时间复杂度nlogn

二、题目练习

三、模板

归并排序

复制代码
#include<bits/stdc++.h>
using namespace std;

const int N=1e5+10;

int q[N],tmp[N];
int 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,j=0;i<=r;i++,j++)q[i]=tmp[j];
    
}

int main()
{
    scanf("%d",&n);
    for(int i=0;i<n;i++)scanf("%d",&q[i]);
    
    merge_sort(q,0,n-1);
    
    for(int i=0;i<n;i++)printf("%d ",q[i]);
    
    return 0;
}

逆序对的数量

复制代码
#include<iostream>
using namespace std;

const int N = 1e5+10;
int q[N],tmp[N];
int n;
long long result=0;

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++];
            result+=mid-i+1;
        }
    while(i<=mid)tmp[k++]=q[i++];
    while(j<=r)tmp[k++]=q[j++];
    
    for(int i=l,j=0;i<=r;i++,j++)q[i]=tmp[j];
    
}

int main()
{
    scanf("%d",&n);
    for(int i=0;i<n;i++)scanf("%d",&q[i]);
    
    merge_sort(q,0,n-1);
    
    printf("%lld",result);
    
    return 0;
}
相关推荐
知识分享小能手6 分钟前
JavaScript学习教程,从入门到精通,Ajax数据交换格式与跨域处理(26)
xml·开发语言·前端·javascript·学习·ajax·css3
爱码小白29 分钟前
UI设计之photoshop学习笔记
笔记·学习
这个懒人32 分钟前
C++后端服务器常见开发框架
c++·后端·框架
bubble34 分钟前
【学习笔记】Shell编程--Bash变量
笔记·学习·bash
不搞学术柒柒1 小时前
《分词算法大揭秘:BPE、BBPE、WordPiece、ULM常见方法介绍》
算法
梁下轻语的秋缘1 小时前
在华为云平台上使用 MQTT 协议:构建高效可靠的物联网通信
物联网·学习·华为云
橘颂TA1 小时前
【C++】数据结构 九种排序算法的实现
数据结构·c++·排序算法
安装虚拟机的老师傅2 小时前
当插入排序遇上“凌波微步“——希尔排序的奇幻漂流
数据结构·算法·排序算法
大魔王(已黑化)2 小时前
LeetCode —— 572. 另一棵树的子树
c语言·数据结构·c++·算法·leetcode·职场和发展
机器学习之心HML2 小时前
JCRQ1河马算法+消融实验!HO-CNN-LSTM-Attention系列四模型多变量时序预测,作者:机器学习之心
算法·机器学习·cnn