快速排序
策略:分而治之,一种著名的递归式问题解决方法。
只要你会递归 ,这个快速排序就很是简单。如果你不会递归,建议去学一下。
少了一个大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 欢迎一起前来探讨。