算法 快速排序 Python

快速排序

策略:分而治之,一种著名的递归式问题解决方法。 

只要你会递归 ,这个快速排序就很是简单。如果你不会递归,建议去学一下。

少了一个大O在这里补一下,快速排序的平均执行时间为O(nlogn) 也是最佳运行时间,最差的执行时间为O(n^2)。

执行时间取决于你对基准值p的选择。

或许会有所疑问为何输出 时间00:00:00 那是因为用时不足一秒。

import datetime
import random

def query_sort(array):
    if len(array) < 2:
        return array  # 最多只有一个元素的数组就别来凑热闹了
    else:
        p = array[0]
        l = [i for i in array[1:] if i <= p]
        g = [i for i in array[1:] if i > p]
        return query_sort(l) + [p] + query_sort(g)

array = [i for i in range(0, 200, 3)]  # 随机数列
random.shuffle(array)  # 打乱顺序
print("array ", len(array), array)   # [0, 3, 6, 9, 12, 15, 18]
# 开始时间
start = datetime.datetime.now()
# 开始排序
res = query_sort(array)
# 结束时间
end = datetime.datetime.now()
# 输出
print("result", res)
print("final is in ", end - start)

---------------在我之前应该有前人写过,但是并没有查看和参考,厚着脸皮写个原创不过分吧---------------

有问题加Q群:1121306638  欢迎一起前来探讨。

 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值