这种排序大体流程是 :
一串数字 例如3 2 2 3 6 5 4 1
先随机取一个元素 大于等于它的放前面 小于它的放后面 直到各部分只有一个数字(假设每次取第一个数)则第一趟下来
less: 2 2 3 1 rand:3 greater :6 5 4
继续分别重复上个步骤
l:2 1 r: 2 g:3 3 l:5 4 r:6 g:null
重复
l:1 r:2 g:null 2 3 3 l:4 r:5 g:null 6
至此 排序完成 1 2 2 3 3 4 5 6
编写思路:
1.确定递归判断停止条件 即数字个数小于2便停止
2.将数字分开,比随机数大的放一边小的放一边 该数放中间
3.调用自身
python3 代码:
from random import *
def qu(List1):
if len(List1) < 2:
return List1
else:
a=randint(0,len(List1)-1)
rand = List1[a]
del List1[a]
less = [i for i in List1 if i <= rand]
greater = [i for i in List1 if i > rand]
return qu(less) + [rand] + qu(greater)
b = [3,2,2,3,6,5,4,1]
print(qu(b))