| 12
 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)
 
 
 |