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

python之使用列表推导式实现快速排序算法

Code:

# 实现快速排序算法
def quick_sort(arr):
    if len(arr) <= 1:
        return arr
    else:
        pivot = arr[len(arr) // 2]
        left = [x for x in arr if x < pivot]
        middle = [x for x in arr if x == pivot]
        right = [x for x in arr if x > pivot]
        return quick_sort(left) + middle + quick_sort(right)

# 示例数组
example_array = [3, 6, 8, 10, 1, 2, 1]

# 使用快速排序算法对数组进行排序
sorted_array = quick_sort(example_array)

# 打印排序后的数组
print('排序后的数组:', sorted_array)

列表推导式

列表推导式的基本语法是:

[表达式 for 变量 in 可迭代对象 if 条件]

组成部分

  1. 表达式:这是你希望添加到新列表中的元素。
  2. for 变量 in 可迭代对象:这是一个 for 循环,遍历 可迭代对象 中的每个元素,并将当前元素赋值给 变量。
  3. if 条件:这是一个可选的条件语句,用于过滤哪些元素会被包含在新列表中。只有满足条件的元素才会被添加到新列表中。
[x for x in arr if x < pivot]
  1. x:这是表达式,表示我们要添加到新列表中的元素。
  2. for x in arr:这是一个 for 循环,遍历 arr 中的每个元素,并将当前元素赋值给 x。
  3. if x < pivot:这是一个条件语句,只有当 x 小于 pivot 时,x 才会被添加到新列表中。

解释步骤

  1. 遍历数组:for x in arr 遍历数组 arr 中的每个元素。
  2. 条件过滤:if x < pivot 检查当前元素 x 是否小于基准值 pivot。
  3. 添加元素:如果条件满足(即 x < pivot),则将 x 添加到新列表中。

算法解释:
重宏观上分析,这个算法相当于二分查找,先找到数组中的最中间的数,然后用剩余的数和中间的数做对比,小于中间数的都在左边,大于中间数的都在右边。
从微观中看递归,也是符合宏观的思维。故最终递归出来的结果是从宏观意义上满足,从微观意义上也满足,最终实现快速排序。


http://www.kler.cn/a/510046.html

相关文章:

  • Mybatis Plus 分页实现
  • 在21世纪的我用C语言探寻世界本质——字符函数和字符串函数(2)
  • 【Unity3D】利用Hinge Joint 2D组件制作绳索效果
  • Jenkins-基于Role的鉴权机制
  • OpenCV基础:获取子矩阵的几种方式
  • 从零搭建SpringBoot3+Vue3前后端分离项目基座,中小项目可用
  • VUE的设置密码强校验的功能
  • 用户中心项目教程(三)---再谈nvm,nodejs和神器Geek
  • 【LFS/从0构建Linux系统】软件包与补丁安装及环境配置
  • MySQL备份案例: mysqldump+binlog实现完全+增量备份
  • 【Kotlin】上手学习之类型篇
  • 【Linux网络编程】序列化与反序列化
  • Jvm垃圾回收机制与常见算法
  • MindAgent:基于大型语言模型的多智能体协作基础设施
  • vue项目引入阿里云svg资源图标
  • SpringMVC (2)
  • 基于C#实现多线程启动停止暂停继续
  • 计算机网络介质访问控制全攻略:从信道划分到协议详解!!!
  • Redis瓶颈和调优
  • FileSaver.js:轻松实现浏览器文件下载
  • Windows 蓝牙驱动开发-BLE低功耗
  • 【React】脚手架进阶
  • python_在钉钉群@人员发送消息
  • 亚博microROS 机器人配置与控制
  • STM32 FreeRTOS内存管理简介
  • rhel7.9利用有网络环境打包ansible