【算法图解】第四章:4.2(快速排序的理解)

快速排序源码

def quicksort(arr):
    if len(arr) < 2:
        return arr
    else:
        pivot = arr[0]
        less = [x for x in arr[1:] if x <= pivot]
        greater = [x for x in arr[1:] if x > pivot]
        return quicksort(less) + [pivot] + quicksort(greater)

1.快速排序函数做了什么事?

1.1 定义了基线条件,保证了数组长度为空或为1时直接返回列表本身;
if len(arr) < 2:
        return arr
1.2 在数组长度为空时:定义了基准值;根据基准值筛选出了两个列表less和greater;
pivot = arr[0]
        less = [x for x in arr[1:] if x <= pivot]
        greater = [x for x in arr[1:] if x > pivot]

2.快速排序函数返回了什么?

2.1 这里说下我的感受:大学时期也曾学过数据结构,那时没有什么感觉理解代码的含义就行了。但是现在我看了
算法图解之后感觉怎么说,豁然开朗这个最能表达我的感受。
	言归正传,这里返回了:小于基准值的快排函数调用+基准值的列表+大于基准值的快排函数调用,最终相当于
	返回了[arr]+[pivot]+[]+[arr]+[pivot]+[arr].....+[arr]+[pivot]+[]+[arr]+[pivot]+[]
return quicksort(less) + [pivot] + quicksort(greater)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值