快速排序python

快速排序(Quick Sort)分为两部分:归位,递归。

归位:在每一轮挑选一个 数,将数列分成两部分,比它大的 数 移动到数列 右边,比它小的 数 移动到数列的 左边

递归:然后这个数的右边部分和左边部分重复上个过程,一直递归到所有数都排好序。

 代码实现

# 归位函数
def
partition(li, left, right): tmp = li[left]  # 取第一个位置数并存起来 while left < right:   while left < right and li[right] > tmp:  # 从右边遍历,若右边数比较大 right -= 1  # 则指针向左移动 li[left] = li[right]  # 若遍历到的数比tmp小,则放到左边位置 while left < right and li[left] < tmp:  # 从左边遍历,若左边数比较小 left += 1  # 则指针向右移动 li[right] = li[left]  # 若遍历到的数比tmp大,则放到右边位置 li[left] = tmp  # 将一开始存起来的数写回来 return left # 返回下标
# 递归
def
quick_sort(li, left, right): if left < right: mid = partition(li, left, right) quick_sort(li, left, mid-1) quick_sort(li, mid+1, right)
# 例子:
li = [9,2,7,8,3,4,1,6,5]
quick_sort(li,0,len(li)-1)
print(li)

 

posted @ 2023-06-08 07:08  天才九少  阅读(32)  评论(0)    收藏  举报