思路:
快速排序采用的是递归和分而治之的思想
代码:
def qsort(li):
# 如果列表是空,则啥都不干
if not li:
return
# 取中间位置mid及其值midvalue,或者随便取一个位置
length = len(li)
mid = length//2
left = []
right = []
# 遍历列表,把所有小于此值的数放到左列表中,把大于此值的数放到右列表中
midvalue = li[mid]
for ele in li:
if ele > midvalue:
right.append(ele)
if ele < midvalue:
left.append(ele)
# 递归调用,对左列表再进行同样的动作
qsort(left)
# 递归调用,对右列表在进行同样的动作
qsort(right)
# 把 右列表 + midvalue + 右列表 拼接起来
tmpli = []
tmpli.extend(left[:])
tmpli.append(midvalue)
tmpli.extend(right[:])
li[:] = tmpli[:]
list =[1,4,5,7,2,3,6,9]
print(list)
qsort(list)
print(list)