您的位置:首页 > 编程语言 > Python开发

Python - 快速排序

2018-02-02 12:40 134 查看
记录学习中的点点滴滴--快速排序

# coding=utf-8

def quick_sort(alist, start, end):
if start >= end:
return

left = start
right = end
# 选择起始位置数值作为中间值
middle = alist[start]
while left < right:
# 从右向左,找到第一个比中间值小的元素
while left < right and alist[right] >= middle:
right -= 1
# 将找到的小于中间值的元素赋值给alist[left],这样保证中间值左侧数值都比中间值小
alist[left] = alist[right]

# 从左向右,找到第一个比中间值大的元素
while left < right and alist[left] < middle:
left += 1
alist[right] = alist[left]

alist[left] = middle
# 对中间元素左侧序列进行递归排序
quick_sort(alist, start, left - 1)
# 对中间元素右侧序列进行递归排序
quick_sort(alist, left + 1, end)

if __name__ == "__main__":
alist = [123, 55, 23, 545, 88, 98, 100]
quick_sort(alist, 0, len(alist) - 1)
print(alist)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python快递排序