快速排序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)

 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号