# -*- coding:utf-8 -*-
def partition(li,left,right):
"""
:param li: 列表
:param left: 左边的元素
:param right: 右边的元素
:return:mid-中间元素的下标
如果右边指针<temp -- 令左指针指向的值=右指针指向值
如果左边指针>temp -- 令右指针指向的值=左指针指向值
当左右指针相等时 -- 结束,返回中间值,即left或right值
"""
temp = li[left]
while left < right:
while left < right and li[right] >= temp:
right -= 1
li[left] = li[right]
while left < right and li[left] <= temp:
left += 1
li[right] = li[left]
li[left] = temp
return left
def quick_sort(li,left,right):
"""
快排
:param li:
:param left:
:param right:
:return:
"""
if left < right:
mid = partition(li, left, right)
quick_sort(li,left, mid-1)
quick_sort(li,mid+1, right)
lis = [5, 3, 2, 9, 1, 4, 6, 8, 7]
print(lis)
quick_sort(lis, 0, len(lis)-1)
print(lis)
快排实现--
最新推荐文章于 2023-04-13 21:43:38 发布