Python代码实现快速排序
排序算法-快速排序
def sort(alist, left, right):
"""
快速排序
:param alist: 需要排序的序列
:param left: 需要排序的序列开始位置索引
:param right: 需要排序的序列结束位置索引
:return: 排序好的序列
"""
low = left
high = right
if low > high: # 结束递归
return
mid = alist[low] # 基数
while low < high:
# 一直循环,知道low=high
while low < high:
# 一开始是从右往左
if alist[high] >= mid:
# 如果high指向的数大于等于基数,high-1
high -= 1
else:
# 如果high指向的数小于基数,结束循环
alist[low] = alist[high]
low += 1
break
while low < high:
# 从左往右
if alist[low] <= mid:
# 如果low指向的数小于等于基数,low-1
low += 1
else:
# 如果low指向的数大于基数,结束循环
alist[high] = alist[low]
high -= 1
break
if low == high:
# 当low的high时,把基数赋值给此处对应的位置
alist[high] = mid
# 基数左侧作为新列表传入
sort(alist, left, low - 1)
# 基数右侧作为新列表传入
sort(alist, high+1, right)
return alist
lst = [6, 1, 2, 7, 9, 3, 4, 5, 10, 8]
print(sort(lst, 0, len(lst) - 1))
下一篇:
最长回文子串——动态规划
