快速排序思路主要为:一列数,选中一个key(以下为第一个数),比key小的放左边,比key大的放右边。key放在一个列表。
左边的继续选key,小的放左边,大的放右边;右边相同。以此形成递归
代码实现
#快速排序
#把最后数作为关键key
def quick_sort(a):
if len(a)<=1:
return a
elif len(a)>1:
left = []
right = []
mindlist = []
key=a[0]
print("key:",key)
for x in a:
if x<key:
left.append(x)
print("left:",left)
elif x>key:
right.append(x)
print("right",right)
else:
mindlist.append(key)
print("mindlist:",mindlist)
left=quick_sort(left)
right=quick_sort(right)
mindlist=quick_sort(mindlist)
return left+mindlist+right
list = [2, 1, 5, 7.9, 13, 3, 6]
print(quick_sort(list)
)
运行结果:
key: 2 mindlist: [2] left: [1] right [5] right [5, 7.9] right [5, 7.9, 13] right [5, 7.9, 13, 3] right [5, 7.9, 13, 3, 6] key: 5 mindlist: [5] right [7.9] right [7.9, 13] left: [3] right [7.9, 13, 6] key: 7.9 mindlist: [7.9] right [13] left: [6] [1, 2, 3, 5, 6, 7.9, 13]
快排还有其他的实现思路,后续有有时间继续贴出。