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

2024.5.25AcWing刷题记录-排序篇

一、786. 第k个数 - AcWing题库

三路快速排序

import random
def func(nums, start, end):if start >= end:return idx = random.randint(start, end)base = nums[idx]i, j, m = start, start, end + 1while j < m:if nums[j] < base:nums[i], nums[j] = nums[j], nums[i]i += 1j += 1elif nums[j] > base:nums[j], nums[m - 1] = nums[m - 1], nums[j]m -= 1else:j += 1func(nums, start, i - 1)func(nums, m, end)n, k = map(int, input().split())
nums = list(map(int, input().split()))
func(nums, 0, len(nums) - 1)
print(nums[k - 1])

二、787. 归并排序 - AcWing题库

递归归并排序

def merge_sort(nums):n = len(nums)if n <= 1:return numsmid = n // 2left = merge_sort(nums[:mid])right = merge_sort(nums[mid:])res = []i, j = 0, 0# 左右列表长度while i < mid and j < n - mid:if right[j] < left[i]:res.append(right[j])j += 1else:res.append(left[i])i += 1# 将剩下的添加到末尾res += left[i:]res += right[j:]return res
n = int(input())
nums = list(map(int, input().split()))
nums = merge_sort(nums)
for x in nums:print(x, end = ' ')

三、788. 逆序对的数量 - AcWing题库

归并排序时计数

# 使用归并排序时计数
def merge_inversions(nums):n = len(nums)if n <= 1:return 0, numsmid = n // 2cnt_l, left = merge_inversions(nums[:mid])cnt_r, right = merge_inversions(nums[mid:])i, j = 0, 0res = []cnt = 0while i < mid and j < n - mid:if left[i] > right[j]:res.append(right[j])j += 1cnt += mid - i  # 注意这里,是left从i到结尾都是算逆序else:res.append(left[i])i += 1res += left[i:]res += right[j:]# print(cnt, cnt_l, cnt_r)return cnt + cnt_l + cnt_r, res
n = int(input())
nums = list(map(int, input().split()))
cnt, _ = merge_inversions(nums)
print(cnt)

感谢你看到这里!一起加油吧!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 2024年5月天润融通JAVA二面15-20K
  • K8S集群再搭建
  • leetcode119-Pascal‘s Triangle II
  • 逻辑分析仪 - 采样率/采样深度
  • Android Audio基础——AudioFlinger音频流管理(八)
  • 释放Mac潜能,选择Magic Disk Cleaner for Mac
  • MPC源码解读及路径跟踪demo
  • 抖音无货源如何做?
  • 犀牛8 for Mac/Win:重塑三维建模的新标杆
  • kafka跨地区跨集群同步工具MirrorMaker2 —— 筑梦之路
  • 03-ArcGIS For JavaScript结合ThreeJS功能
  • vue项目实战 - 如果高效的实现防抖和节流
  • 软考-程序员 知识点与部分真题梳理
  • qt多语言翻译不生效的原因
  • 回溯大法总结
  • [译]Python中的类属性与实例属性的区别
  • 【mysql】环境安装、服务启动、密码设置
  • 2017届校招提前批面试回顾
  • 5、React组件事件详解
  • JavaWeb(学习笔记二)
  • Map集合、散列表、红黑树介绍
  • node入门
  • SpiderData 2019年2月16日 DApp数据排行榜
  • Sublime Text 2/3 绑定Eclipse快捷键
  • uni-app项目数字滚动
  • windows下mongoDB的环境配置
  • 百度地图API标注+时间轴组件
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 基于 Babel 的 npm 包最小化设置
  • 如何解决微信端直接跳WAP端
  • 物联网链路协议
  • 小程序测试方案初探
  • 协程
  • 优化 Vue 项目编译文件大小
  • hi-nginx-1.3.4编译安装
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #考研#计算机文化知识1(局域网及网络互联)
  • (2)leetcode 234.回文链表 141.环形链表
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (转)平衡树
  • (转载)利用webkit抓取动态网页和链接
  • .CSS-hover 的解释
  • .net core + vue 搭建前后端分离的框架
  • .net core 6 集成和使用 mongodb
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .NET轻量级ORM组件Dapper葵花宝典
  • .skip() 和 .only() 的使用