第k个数

一遍ac,还是很不错的

n,k = map(int,input().split())
a = list(map(int,input().split()))def quick_sort(a,l,r,k):if l>=r:return a[l]x = a[l+r>>1]i,j=l-1,r+1while i<j:i+=1j-=1while a[i]<x:i+=1while a[j]>x:j-=1if i<j:a[i],a[j]=a[j],a[i]res = j-l+1if res>=k:return quick_sort(a,l,j,k)else:return quick_sort(a,j+1,r,k-res)print(quick_sort(a,0,n-1,k))

归并排序

注意i是从l开始,不是从0开始

n = int(input())
a = list(map(int,input().split()))def merge_sort(q,l,r):if l>=r:returnmid = l+r>>1merge_sort(q,l,mid)merge_sort(q,mid+1,r)tmp = []# i是从l开始i,j=l,mid+1while i<=mid and j<=r:if q[i]<=q[j]:tmp.append(q[i])i+=1else:tmp.append(q[j])j+=1if i<=mid:tmp += q[i:mid+1]if j<=r:tmp += q[j:r+1]q[l:r+1] = tmp[:]
merge_sort(a,0,n-1)
print(' '.join(map(str,a)))

三、逆序对数量

n = int(input())
q = list(map(int,input().split()))def merge_sort(q,l,r):if l>=r:return 0mid = l+r>>1res = merge_sort(q,l,mid) + merge_sort(q,mid+1,r)tmp = []i,j = l,mid+1while i<=mid and j<=r:if q[i]<= q[j]:tmp.append(q[i])i+=1else:tmp.append(q[j])j+=1res += mid-i+1if i<=mid:tmp += q[i:mid+1]if j<=r:tmp += q[j:r+1]q[l:r+1] = tmp[:]return resprint(merge_sort(q,0,n-1))

算法R2D3-复习快选归并逆序对数量相关推荐

  1. 210814算法日记:归并逆序对板子快排第k个数板子第k个数的stl

    1.归并逆序对 #include<iostream> using namespace std; const int N=1e5+10; typedef long long ll; int ...

  2. 树状数组求逆序对_算法系列之-数组中的逆序对

    题目来源 剑指offer 01 题目描述 在数组中如果前一个数字大于后一个数字,则称为这个数字组合组成一个逆序对.输入一个数组,求所有的逆序对的总数. 如 数组 {7,5,6,4} 则它的逆序对是 ( ...

  3. 算法笔记【归并排序】:逆序对

    Problem F. Ricky队形 时间限制 1000 ms 内存限制 256 MB 题目描述 Ricky班里有n(2<=n<=100000)个人,每个人有一个学号ai(1<=ai ...

  4. 算法笔记_065:分治法求逆序对(Java)

    目录 1 问题描述 2 解决方案 2.1 蛮力法 2.2 分治法(归并排序)   1 问题描述 给定一个随机数数组,求取这个数组中的逆序对总个数.要求时间效率尽可能高. 那么,何为逆序对? 引用自百度 ...

  5. 【算法题目】数组中的逆序对

    题目来源:<剑指offer>面试题36 题目:在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这两个数组中的逆序对的总数.例如数组{7,5, ...

  6. 【算法】树状数组 P1908 逆序对

    P1908 逆序对 #include<iostream> #include<cstdio> #include<algorithm> #define ll long ...

  7. 树状数组 + 离散化 求逆序对数量

    AcWing 788. 逆序对的数量 #include <bits/stdc++.h> using namespace std;typedef long long ll; const in ...

  8. 算法题复习(快排、链表、二分、哈希、双指针)

    目录 1.快速排序复习 2.链表部分复习 203. 移除链表元素 707. 设计链表 206. 反转链表 142.环形链表 II 3.二分法复习 4.哈希法复习 5.双指针复习 **15. 三数之和* ...

  9. -9 逆序输出一个整数的各位数字_【每日算法】基础算法——归并排序[求逆序对的数量](四)(思想很经典)...

    题目内容 给定一个长度为n的整数数列,请你计算数列中的逆序对的数量. 逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i < j 且 a[i] > a[j],则其为一个逆 ...

最新文章

  1. 第四范式程晓澄:机器学习如何优化推荐系统
  2. webpack入门 --初级压缩
  3. 听说Mutex源码是出名的不好看,我不信,来试一下
  4. Sklearn环境搭建与常用包
  5. CGI + FastCGI(PHP-FPM)联系与区别 【图解 + 注释】
  6. 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作
  7. vue3 eslint吐槽记录
  8. 【机械仿真】基于matlab GUI机械臂运动控制【含Matlab源码 063期】
  9. java case容易崩溃_一些故障解决的CASE
  10. UltraEdit 编辑器授权许可暴力破解
  11. android 计时器 开始 停止 继续和暂停
  12. 人脸检测 Retinaface - 数据集的处理(WIDER FACE)
  13. Qt+OpenCV在arm板上运行实现思路
  14. 混合现实VR Twitch视频
  15. 软件测试——三角形问题测试用例练习
  16. android 微信授权获取用户个人信息
  17. 昆明拟整治11类陋习 行人翻越隔离设施罚50元
  18. 卧龙修图插件之面部精修教程
  19. 使用vs2019将libtorch或者网络打包成dll
  20. 安卓系统最好用的5款epub阅读器

热门文章

  1. PYTHON常用库简介
  2. MySQL数据库的敏感标识_不同数据库标志符长度限制总结
  3. linux tar 文件归档命令
  4. 他强任他强,清风拂山岗——信息爆炸时代的迷茫
  5. 高精度定位Ntrip服务器部署
  6. mac版PHPstudy集成环境
  7. 将txt转换成pdf格式的操作方法
  8. Redis关闭持久化
  9. R语言用EnhancedVolcano和ggplot画同一数据的火山图
  10. 学习基础设施管理工具 Terraform 的基本用法,包括资源创建、状态管理