0
点赞
收藏
分享

微信扫一扫

Leetcode 刷题笔记 (sort)

天天天蓝loveyou 2022-03-11 阅读 106

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)
        
举报

相关推荐

Leetcode刷题笔记

【Leetcode】刷题笔记

LeetCode刷题笔记

【leetcode刷题笔记】

Leetcode刷题笔记8

leetcode刷题笔记java版

0 条评论