快速排序python

import random
#先换一个
def getPosition(array, left, right):
    # 一、先求中,中右换,左为板
    mid = (left+right)//2
    p = array[mid]
    array[mid] = array[right]
    array[right] = p
    board = left

    # 二、再遍历,若小p,i板换,板加一
    for i in range(left, right): #遍历到right-1
        if array[i] < p:
            array[i], array[board] = array[board], array[i]
            board += 1

    # 三、后右板,返回板
    array[right], array[board] = array[board], array[right]
    return board


# 再换全部
def quickSort(l, left, right):
    # 左小右,求p点。p减一,递归右,p加一,递归左。
    if left < right:
        p = getPosition(l, left, right)
        quickSort(l, left, p-1)
        quickSort(l, p+1, right)


# main
n = 10
l = []
for i in range(1, n+1):
    l.append(random.randint(1, 101))
print(l)
quickSort(l, 0, n-1)
print(l)

 

posted @ 2020-05-25 21:09  落地就是一把98K  阅读(106)  评论(0)    收藏  举报