数据结构(四)快速排序

2018-03-30  本文已影响7人  learner222
# -*- coding: utf-8 -*-


def sort(arr, lo, hi):
    if hi <= lo:
        return

    # 分片
    mid = partition(arr, lo, hi)

    sort(arr, lo, mid - 1)
    sort(arr, mid + 1, hi)


def partition(arr, lo, hi):
    value = arr[lo]

    i = lo + 1
    j = hi
    while True:
        while arr[i] <= value and i != hi:
            i += 1
        while arr[j] > value and j != lo:
            j -= 1
        if i < j:
            # 交换 i、j 位置的值
            temp = arr[i]
            arr[i] = arr[j]
            arr[j] = temp
        else:
            # 交换 low、j 位置的值
            temp = arr[j]
            arr[j] = arr[lo]
            arr[lo] = temp
            break
    return j


arrTest = [10, 9, 7, 8, 3, 1]
sort(arrTest, 0, len(arrTest) - 1)
print(arrTest)
上一篇下一篇

猜你喜欢

热点阅读