Advertisement

快速排序(基于分治策略)

阅读量:

问题描述

复制代码
    import numpy as np
    
    
    def partition(l, p, r):  # 以最后一个元素A[r]为基准,将数组A[p...r]划分为三段A[p...q-1], A[q], A[q+1...r],并满足三段升序排列。划分结束后,原A[r]就放在划分后q的位置。
    x = l[r]
    i = p - 1
    for j in range(p, r):
        if l[j] <= x:
            i = i + 1
            l[i], l[j] = l[j], l[i]
    l[i + 1], l[r] = l[r], l[i + 1]
    return i + 1
    
    
    def quicksort(l, p, r):
    if p < r:
        q = partition(l, p, r)
        print("%d %d" % (l[q], q))  # 输出中间结果
        quicksort(l, p, q - 1)
        quicksort(l, q + 1, r)  # 刚开始写成QuickSort(L, q, r) WA
    else:
        return

全部评论 (0)

还没有任何评论哟~