class Solution:
def sortColors(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
def partition(nums, low, high):
# 选取第一个元素作为枢轴
pivot = nums[low]
# 初始化分区点的索引为 low + 1
i = low + 1
# 遍历数组,将小于等于枢轴的元素放在左侧
for j in range(low + 1, high + 1):
if nums[j] <= pivot:
# 将当前元素与分区点元素交换位置
nums[i], nums[j] = nums[j], nums[i]
i += 1
# 将枢轴元素放在分区点位置,并返回分区点索引
nums[low], nums[i - 1] = nums[i - 1], nums[low]
return i - 1
# 定义快速排序函数
def quicksort(nums, low, high):
if low < high:
# 对当前数组进行分区操作,得到分区点索引
pi = partition(nums, low, high)
# 对分区点左侧和右侧的子数组进行递归快速排序
quicksort(nums, low, pi - 1)
quicksort(nums, pi + 1, high)
# 调用快速排序函数对整个数组进行排序
quicksort(nums, 0, len(nums) - 1)
leetcode-颜色分类
最新推荐文章于 2024-08-02 16:56:20 发布