Leetcode 刷题笔记 Sort
idea:
quicksort: 随机取pivot 可以避免最坏情况
912. Sort an Array (medium) (quicksort)
https://leetcode.com/problems/sort-an-array/
class Solution:
def sortArray(self, nums: List[int]) -> List[int]:
def partition(nums, l ,r):
i = l # 左index
j = r # 右index
rdn_pivotidx = random.randint(l,r)
nums[l],nums[rdn_pivotidx] = nums[rdn_pivotidx], nums[l] #随机pivot 防止worst case
pivot = nums[l]
while i != j:
while i < j and nums[j] > pivot:
j -= 1
while i < j and nums[i] <= pivot:
i += 1
if i < j:
nums[i],nums[j] = nums[j],nums[i]
nums[l],nums[i] = nums[i],nums[l]
return i
def quicksort(nums,l,r):
if l > r:
return
pivot_idx = partition(nums,l,r)
quicksort(nums,l,pivot_idx - 1)
quicksort(nums,pivot_idx + 1,r)
return nums
return quicksort(nums,0,len(nums) - 1)