1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| """ nums, 0, len(nums)-1
要使nums在 0到 len(nums)-1有序,先找一个分界点p, 使得nums[0:p-1]都小于等于num[p] 使得nums[p:len(num)-1]大于nums[p] 这就是一个前序遍历 """
def sort(sums: list, left, right): if left >= right: return p = partition(sums, left, right) sort(sums, left, p - 1) sort(sums, p + 1, right)
def partition(sums: list, left, right): value = sums[right] i = left for j in range(left, right): if sums[j] < value: sums[j], sums[i] = sums[i], sums[j] i = i + 1 sums[right], sums[i] = sums[i], sums[right] return i
if __name__ == '__main__': nums = [10, 2, 1, 3, 4, 5, 6, 7] sort(nums, 0, len(nums) - 1) print(nums)
|