排序算法python版(6)-快速排序算法
  TEZNKK3IfmPf 2023年11月14日 25 0

快速排序算法动态图如下:
排序算法python版(6)-快速排序算法

  • 快速排序算法思路
    快速排序算法使用的也是分治的思想,即
    1、先取出一个基数(一般取第一个),然后遍历将比这个数小的都移动到左侧,大的都移动到右侧
    2、对1中取到的左侧和右侧分别按照步骤1递归去处理

具体代码如下:

def quick_sort(datas):
    if len(datas)<=1:
        return datas
    base=datas[0]
    left=[]
    mid=[]
    right=[]
    for elem in datas:
        if elem<base:
            left.append(elem)
        elif elem >base:
            right.append(elem)
        else:
            mid.append(elem)
    left=quick_sort(left)
    right=quick_sort(right)
    left.extend(mid)
    left.extend(right)
    return left

if __name__=="__main__":
    datas = [10,9,8,7,6,5,4,3,2,1,0]
    datas = quick_sort(datas)
    print("经过归并排序后结果:", datas)

执行结果如下:

经过归并排序后结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

最好的情况下:

def quick_sort(datas):
    if len(datas)<=1:
        return datas
    base=datas[0]
    left=[]
    mid=[]
    right=[]
    for elem in datas:
        if elem<base:
            left.append(elem)
        elif elem >base:
            right.append(elem)
        else:
            mid.append(elem)
    left=quick_sort(left)
    right=quick_sort(right)
    left.extend(mid)
    left.extend(right)
    return left

if __name__=="__main__":
    datas = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    datas = quick_sort(datas)
    print("经过归并排序后结果:", datas)

执行结果如下:

经过归并排序后结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   38   0   0 python开发语言
  TEZNKK3IfmPf   2024年05月31日   28   0   0 python
  TEZNKK3IfmPf   2024年05月31日   35   0   0 excelpython
  TEZNKK3IfmPf   2024年05月31日   30   0   0 python
TEZNKK3IfmPf