转自 : 小婷儿的博客python https://www.cnblogs.com/xxtalhr/
快速排序
快速排序采用了分治的策略。他的基本思想是将需要排序的数据分割为两部分,其中一部分的所有数据都比另一组的数据小,然后对这两部分进行递归,最终整个数据变为有序序列
1、原理
-
在数列之中,选择一个元素作为”基准”,或者叫比较值。
-
数列中所有元素都和这个基准值进行比较,如果比基准值小就移到基准值的左边,如果比基准值大就移到基准值的右边
-
以基准值左右两边的子列作为新数列,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。
2、代码
import random
import time
def outer(f):
def inner(lst):
t1 = time.time()
a = f(lst)
print(time.time()-t1)
return a
return inner
@outer
def quick_sort(lst):
l = len(lst)
if l<2:# 当列表中只有一个值时表示有序,返回
return lst
mid = lst[l//2]
left,right = [],[]
lst.pop(l//2)
for i in lst:
if i<=mid:
left.append(i)
else:
right.append(i)
return quick_sort(left) + [mid] + quick_sort(right)
lst = [i for i in range(10000)]
random.shuffle(lst)
print(lst)
print(quick_sort(lst))
时间: