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

一行代码实现快速排序

文章目录

  • 前言
  • 快排思想
  • 代码
  • 代码解释
  • 最后

前言

大家好,我是醉墨居士,最近想用尽可能少的代码行数实现快速排序,并且不导入Python的包来实现,最后优化了一下,只用一行代码就实现了快速排序,感觉很具备学习价值,可以让初学者快速学习快速排序的思想与实现

快排思想

假设我们采用升序排序
我们在待排序的数组中找到一个基准值,然后对该数组进行分区,将数组中小于基准值的数都放到基准值位置的左边,将数组中大于基准值的数都放到基准值位置的右边,然后对左区间小于基准值的部分进行快速排序递归将该部分调整为有序,然后对右区间大于基准值的部分进行快速排序递归将该部分调整为有序
执行完以上步骤,最终我们的数组就按照升序进行排列了

代码

def quick_sort(nums): return nums if len(nums) < 2 else quick_sort([x for x in nums[1:] if x < nums[0]]) + [x for x in nums if x == nums[0]] + quick_sort([x for x in nums[1:] if x > nums[0]])

代码解释

首先定义了一个quick_sort函数,
然后判断待排序的列表的长度

  • 如果小于2,则表示不需要进行排序直接返回该列表
  • 如果不小于2,则选取列表中的0号索引位置的元素作为基准值,然后通过列表推导式计算小于基准值的列表进行快速排序递归将该区间排序,计算所有等于基准值的元素的列表,计算大于基准值的列表进行快速排序递归将该区间排序,然后拼接三份区间列表,即为最终有序的列表

最后

我是醉墨居士,关注我,学习算法不迷路,用最简单的思路讲解传授算法
大道至简、返璞归真、重剑无锋我最喜欢的几个成语,简化复杂的问题,不止算法,生活也是一样,我们需要做一些减法,极简是一种学习方法、生活哲学、解决问题的策略!


http://www.mrgr.cn/news/33658.html

相关文章:

  • STM32问题集
  • 基于STM32的智能家居安防系统设计
  • HTML之表单学习记录
  • 【话题讨论】AI赋能电商:创新应用与销售效率的双轮驱动
  • MDBook 使用指南
  • MyBatis从入门到进阶
  • OJ在线评测系统 后端开发数据库初始化工作 开发库表 建立数据库索引 Mybatis映射初始化接口开发
  • golang学习笔记2-语法要求,注释与代码风格
  • pycharm加载虚拟环境及运行代码
  • 【VUE3.0】动手做一套像素风的前端UI组件库---Radio
  • 模拟电路工程师面试题
  • Android——Application
  • awd初试
  • 车辆重识别(CVPR2016图像识别的深度残差学习ResNet)论文阅读2024/9/21
  • python异常处理知识简记
  • 1542. 找出最长的超赞子字符串
  • Snap 发布新一代 AR 眼镜,有什么特别之处?
  • PCB设计中百兆以太网是否需要差分布线?
  • 皮科医生对网红药膏的说明
  • 7. 无线网络安全
  • 【.NET 8 实战--孢子记账--从单体到微服务】--特别说明
  • 以太坊客户端Geth的介绍与搭建
  • 基于SpringBoot+Vue+MySQL的校园一卡通系统
  • ECharts基础使用方法 ---vue
  • 都市女生热衷找搭子的原因?只因对生活的热爱和追求
  • vscod django项目--编辑用户信息