栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【动手学数据结构—快速排序(Python)】

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【动手学数据结构—快速排序(Python)】

快速排序
  • 原理
  • 代码实现

原理

代码实现
def paratition(li, left, right):
    temp = li[left]  # 用temp变量暂存第一个元素
    while left < right:  # 当left和right两个指标的位置没碰到时,继续更替
        while left < right and li[right] >= temp:  # 第一个条件防止right小于left 第二个条件则是查找的核心条件
            right -= 1  # 如果这个位置大于temp 则往上找
        li[left] = li[right] # 找到了! 换
        while left < right and li[left] <= temp: # 与上一个while同理
            left += 1
        li[right] = li[left]
    li[left] = temp  # 最后更替到left与right重叠的时候,再把temp放回最中间,因为temp在列表中被拿走了
    return left  # 返回中心位置


def quick_sort(li, left, right):
    if left < right: # 递归终止条件:left=right,写成while的话会造成死循环。
        mid = paratition(li, left, right)  # 调用函数,取第一个元素排序后的索引
        # 两边递归调用,完成排序
        quick_sort(li, left, mid-1)
        quick_sort(li, mid+1, right)


Li = [5, 2, 4, 6, 1, 3]
quick_sort(Li, 0, len(Li)-1)
print(Li)


参考:
https://www.bilibili.com/video/BV1uA411N7c5?p=17

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/835079.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号