python 快速排序 递归思想

小雷恶补
欢迎交流vxin:lxq2390968687

def quick_sort(arry):
    part_quick_sort(arry, 0, len(arry)-1)#局部快排
    return arry

def part_quick_sort(arry, L, R):
    if L >= R:#序列中无记录或只有一条记录
        return
    i = L
    j = R
    x = arry[i]#取出第一个元素给x,其他元素与x进行比较,将序列分为左右两半
    while i < j:
        #取出第一个元素后,第一个位置空,从最右端扫描元素与x比较,找到小于x的元素将其放入空位置
        while i < j and arry[j] > x:#后边值大于x,则j减小
            j -= 1
        if i < j:
            arry[i] = arry[j]
            i +=1
        # 此时右边的位置为空,从左端i++开始扫描元素与x比较,找到小于x的元素将其放入空位置
        while i < j and arry[i] < x:#前边值小于x,则i减小
            i +=1
        if i < j:
            arry[j] = arry[i]
            j -=1
    arry[i] = x
    part_quick_sort(arry, 1, i-1)#递归处理左半部分
    part_quick_sort(arry, i+1, R)#递归处理右半部分

a = [1,5,3,4,2,6]
a = quick_sort(a)
print(a)

你可能感兴趣的:(算法)