Python学习之快速排序

def quickSort(arr, start, end):
if start >= end:
return
pivote = arr[start] # 基准数
low = start
high = end
while low < high:
while low < high and arr[high] >= pivote: # 从右往左找 比目标小的 直到找到为止
high -= 1
arr[low] = arr[high] # 找到并赋值
while low < high and arr[low] < pivote: # 从左往右找 比目标大的 直到找到为止
low += 1
arr[high] = arr[low] # 找到并赋值

arr[low] = pivote # 还原目标值的位置 此时目标值正是low所处的下标位置
quickSortJava(arr, start, low -1) # 从0到目标位置之前一个 递归目标元素左边
quickSortJava(arr, low + 1, end) # 从目标元素后一个到最后 递归目标元素右边


if __name__ == '__main__':
alist = [54, 26, 93, 17, 77, 31, 44, 55, 20]
quickSort(alist, 0, len(alist) - 1)
print(alist)
posted @ 2020-10-29 11:02  RickL  阅读(85)  评论(0编辑  收藏  举报