快速排序 递归
快速排序就是在一个数组中选择一个数作为基准,我们遍历这个数组中其他的元素,将小于和等于这个基准数的元素放入一个新的数组,将大于这个基准数的元素放入另一个新元素,得到的新数组进行如上的操作,直到这个数组里面只有一个元素或为空时,将所有的数组拼接起来就是排序好的数组。
递归在我看来就是函数调用自己
在下面的实现代码中,我选择了数组中的中间数作为基准数
def qs(b):
if len(b) < 2:
return b
high = len(b)-1
mid = int(high/2)
left =[]
right =[]
midValue = b.pop(mid) #需要注意的是选了基准一定要在遍历这个素组之前删除这个基准元素,否则当第一轮比较大小时
#若right数组没有元素,left数组和原数组一样,陷入死循环
for i in range(len(b)):
if b[i]>midValue:
right.append(b[i])
else:
left.append(b[i])
return qs(left)+[midValue]+qs(right)
a=[5,23,46,3,24,5]
print(qs(a))
执行结果如下