qq_36816782 2021-12-05 17:52 采纳率: 100%
浏览 12
已结题

python写一个快速排序

用python写一个快速排序, 要求用到递归, 然后把partition操作分离的写出来, 求帮一下

  • 写回答

1条回答 默认 最新

  • 索利亚噶通 2021-12-05 17:54
    关注

    有用请采纳

    class Solution:
        def partition(self, nums, left, right):
            partitionValue = nums[left]
            partitionPos = left
    
            for i in range(left + 1, right + 1):
                if nums[i] < partitionValue:
                    partitionPos += 1
                    nums[partitionPos], nums[i] = nums[i], nums[partitionPos]
    
            nums[partitionPos], nums[left] = nums[left], nums[partitionPos]
    
            return partitionPos
    
        def quickSort(self, nums, left, right):
            if left >= right:
                return
    
            partition = self.partition(nums, left, right)
            self.quickSort(nums, left, partition - 1)
            self.quickSort(nums, partition + 1, right)
    
        def sort(self, nums):
            self.quickSort(nums, 0, len(nums) - 1)
            return nums
    
    
    x = Solution()
    print(x.sort([5, 3, 9, 4, 2, 7]))
    print(x.sort([]))
    print(x.sort([5]))
    print(x.sort([5, 5, 5, 5]))
    print(x.sort([-1, 6, -7, 2]))
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月13日
  • 已采纳回答 12月5日
  • 创建了问题 12月5日

悬赏问题

  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 个人网站被恶意大量访问,怎么办
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制