快速排序的python实现

def quick_sort(array, left, right):
    if left < right:
        base_index = division(array, left, right)
        quick_sort(array, left, base_index - 1)  # 对小于基准值的再次进行分割
        quick_sort(array, base_index + 1, right)  # 对大于基准值的再次进行分割


def division(array, left, right):
    base_value = array[right]
    i = left
    for j in range(left, right):  # 遍历除最后一个元素的其他元素
        if array[j] <= base_value:  # 和基准值对比
            array[i], array[j] = array[j], array[i]  # 小于基准值,则替换到list前
            i += 1  # 替换过后,往后移一位,准备接受下次替换
    array[i], array[right] = array[right], array[i]  # 遍历完成后,将基准值放到所有小于它的值之后
    return i  # 返回基准值的index,用于分割列表


if __name__ == '__main__':
    a = [random.randint(1, 1000) for i in range(50)]
    quick_sort(a, 0, len(a) - 1)
    print a

猜你喜欢

转载自www.cnblogs.com/small-office/p/9392375.html