python算法-快速排序演化

快速排序-递归排序
每次把第一个数设为中间值,比它大的放右边的列表,比它小的放左边的列表。如果列表长度小于2,则返回列表。对每个子列表递归排序
def quick_sort(lst):
if len(lst)<2:
return lst
# print(lst)
r=[]
l=[]
k=lst[0]
# print(k)
for i in range(1,len(lst)):
if lst[i]>=k:
r.append(lst[i])
else:
l.append(lst[i])
return quick_sort(l)+[k]+quick_sort(r)
缺点,要建两个临时列表,占用空间

改进:原地排序,不占用新空间
def quick_sort(lista, first, last):
if first >= last:
return
mid_value = lista[first]
low = first
hight = last
while low < hight:
while low < hight and lista[hight] >= mid_value:
hight -= 1
lista[low] = lista[hight]
while low < hight and lista[low] < mid_value:
low += 1
lista[hight] = lista[low]
lista[low] = mid_value
quick_sort(lista, first, low-1)
quick_sort(lista, low+1, last)
return lista

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容