当前位置: 首页 > news >正文

算法基础学习|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;
}

http://www.dtcms.com/a/164179.html

相关文章:

  • go单向链表
  • 阿里千问Qwen3技术解析与部署指南 :混合推理架构突破性优势与对DeepSeek R1的全面超越
  • 软件测试基础知识详解
  • 【VLNs篇】01:视觉语言导航(VLN)中的LLM角色
  • 关于flex布局
  • scratch代码——游戏开发 【弹簧与反弹】
  • ArrayList的elementData.length和size
  • 双向流热固耦合的收敛
  • (leetcode) 力扣100 4.移动零(两种O(n)方法 双指针)
  • 大模型核心技术及架构解析
  • 2025.4.29_STM32_看门狗WDG
  • 一文读懂 JavaScript 中的深浅拷贝
  • C#学习——类型、变量
  • 学习在暑假避免躺平和内卷(马井堂)
  • 16、路由守卫:设置魔法结界——React 19 React Router
  • 系统安装 ios放同一个u盘 ventory使用+windows安装,双系统互相访问中间盘
  • PPT/WORD如何实现Shift键加鼠标滚轮实现左右滑动
  • 嵌入式复习第一章
  • 拆固态硬盘短接开卡+ as ssd benchmark查看硬盘读写速度
  • 0.5 像素边框实现
  • Arthas在Java程序监控和分析中的应用
  • 智能驾驶与AI智能体的共性、碰撞与未来融合路径
  • 问答:C++如何通过自定义实现移动构造函数和移动赋值运算符来实现rust的唯一所有权?
  • 驱动开发硬核特训 · Day 25 (附加篇):从设备树到驱动——深入理解Linux时钟子系统的实战链路
  • 高德地图线上截图瓦片地图加载不完全
  • 4月29日星期二今日早报简报微语报早读
  • dify升级最新版本(保留已创建内容)
  • 黑马Redis(四)
  • 基于非递归求解的汉诺塔超级计算机堆栈与数据区设计方案
  • 13.继承、重载、重写、多态、抽象类、接口、final、Static的学习