def quicksort(date):
if len(date) < 2: #基线条件
print("数组原来的样子",date)
return date
else:#在什么情况下可以进行递归
pivot = date[0] #选取arr[0]作为基准值
#left = [i for i in arr[1:] if i <= pivot] #左边的小于基准值
left,right=[],[]
for i in date[1:]:#由于基准值每次选取的列表的第一个数值,故进行比较需要剔除第一个数
if i <= pivot :
left.append(i)
print("左边", left)
else:
right.append(i)
print("右边", right)
#right = [i for i in arr[1:] if i > pivot] #右边的大于基准值
n=0
n=+1
#print("这是第%s排序"%n,arr)
return quicksort(left) + [pivot] + quicksort(right)#对左边和右边的分列表进行递归
print(quicksort([1,1, 5, 7, 9, 3]))
快速排序,采取分而治之+冒泡排序算法,任意选取一个基准值,进行递归,每次递归的结果排序到递归不可再执行的条件,最后将左边递归的列表和中间以及右边拼接
能够递归的
1.基线条件
2.递归的方式
|