快速排序算法动态图如下:
- 快速排序算法思路
快速排序算法使用的也是分治的思想,即
1、先取出一个基数(一般取第一个),然后遍历将比这个数小的都移动到左侧,大的都移动到右侧
2、对1中取到的左侧和右侧分别按照步骤1递归去处理
具体代码如下:
def quick_sort(datas):
if len(datas)<=1:
return datas
base=datas[0]
left=[]
mid=[]
right=[]
for elem in datas:
if elem<base:
left.append(elem)
elif elem >base:
right.append(elem)
else:
mid.append(elem)
left=quick_sort(left)
right=quick_sort(right)
left.extend(mid)
left.extend(right)
return left
if __name__=="__main__":
datas = [10,9,8,7,6,5,4,3,2,1,0]
datas = quick_sort(datas)
print("经过归并排序后结果:", datas)
执行结果如下:
经过归并排序后结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
最好的情况下:
def quick_sort(datas):
if len(datas)<=1:
return datas
base=datas[0]
left=[]
mid=[]
right=[]
for elem in datas:
if elem<base:
left.append(elem)
elif elem >base:
right.append(elem)
else:
mid.append(elem)
left=quick_sort(left)
right=quick_sort(right)
left.extend(mid)
left.extend(right)
return left
if __name__=="__main__":
datas = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
datas = quick_sort(datas)
print("经过归并排序后结果:", datas)
执行结果如下:
经过归并排序后结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]