首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python|快速排序

Python|快速排序

作者头像
算法与编程之美
发布2020-07-28 14:25:06
发布2020-07-28 14:25:06
4060
举报

1 快速排序的方法

取一个元素s,将比s小的元素放在s的左边,将比s大的元素放在s的右边;就是将数组划分成两部分,左小右大,然后将分好的两个数组递归继续执行上述操作,直到排序完毕为止。

此处用两个指针:left 与 right来处理,当s归位时划分完毕;例如数组;

排序前

以s = 5 进行划分为左小右大,直到s归位,返回该处的left

递归执行上述步骤;在对划分的左右进行排序,直到排序完毕。

左边:left=0,right=返回的left-1 右边:left=返回的left,right=数组长度

2 代码演示

代码语言:javascript
复制

# 快速排序

def passt(li, left, right):

    s = li[left] # 该处 我们始终以第一个元素为s,即所取元素

    while left < right: # 然后进行循环满足:左小右大原则将数组的元素归位

        while li[right] >= s and left < right:

            right -= 1

        li[left] = li[right]

        while li[left] <= s and left < right:

            left += 1

        li[right] = li[left]

    li[left] = s

    return left # 归位后返回其下标

 

def quick_sorted(li, left, right):

    if left < right:

        mid = passt(li, left, right)

        quick_sorted(li, left, mid-1) # 递归将其左部分进行归位处理

        quick_sorted(li, mid+1, right) # 递归将其右部分进行归位处理

 

if __name__ == '__main__':

    li = [5,4,6,7,3,8,2,1,9]

    quick_sorted(li, 0, len(li)-1)

    print(li)

3 总结

本篇博客主要讲述了快排的排序方法,及如何用python代码来实现。快速排序相对于其他排序方法而言,主要突出了一个“快”字,可以更快的将数组的元素进行排序。

END

主 编 | 王文星

责 编 | W Z Y

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档