本帖最后由 临时号 于 2022-6-14 00:15 编辑 return quick_sort(lo) + [pivot] + quick_sort(hi)
这行运用了递归的思想,将列表的第一个值作为中间值,其他值继续调用quick_sort函数去递归,最后当列表只剩下一个值时返回
程序的执行流程是这样的:
首先,你判断了nums列表的长度
因为现在nums的长度为5,不符合len(nums)<=1的条件,所以程序没有执行return nums
然后你调用了partition函数,将nums列表传了进去
在partition函数中,nums=nums:
首先,你取了nums列表中的第一个值,将其赋值给pivot变量,也就是说此时pivot=0
然后,你创建了一个列表,将nums列表中除了第一个值的其他值并小于pivot的值全部放进去,赋值给lo
也就是说此时lo=[]
然后,你又创建了一个列表,将nums列表中除了第一个值的其他值并大于等于pivot的值全部放进去,赋值给hi
也就是说此时hi=[3,4,1,2]
然后返回lo,pivot,hi
在quick_sort函数中:
用lo,pivot,hi变量分别接受返回的值
然后调用quick_sort函数,将lo列表传了进去
在quick_sort函数中,nums=lo:
首先,你判断了nums列表的长度
因为现在nums的长度为4,不符合len(nums)<=1的条件,所以程序没有执行return nums
然后你调用了partition函数,将nums列表传了进去
在partition函数中,nums=nums:
首先,你取了nums列表中的第一个值,将其赋值给pivot变量,也就是说此时pivot=3
然后,你创建了一个列表,将nums列表中除了第一个值的其他值并小于pivot的值全部放进去,赋值给lo
也就是说此时lo=[1,2]
然后,你又创建了一个列表,将nums列表中除了第一个值的其他值并大于等于pivot的值全部放进去,赋值给hi
也就是说此时hi=[4]
然后返回lo,pivot,hi
在quick_sort函数中:
用lo,pivot,hi变量分别接受返回的值
然后调用quick_sort函数,将lo列表传了进去
在quick_sort函数中,nums=lo:
首先,你判断了nums列表的长度
因为现在nums的长度为2,不符合len(nums)<=1的条件,所以程序没有执行return nums
然后你调用了partition函数,将nums列表传了进去
在partition函数中,nums=nums:
首先,你取了nums列表中的第一个值,将其赋值给pivot变量,也就是说此时pivot=1
然后,你创建了一个列表,将nums列表中除了第一个值的其他值并小于pivot的值全部放进去,赋值给lo
也就是说此时lo=[]
然后,你又创建了一个列表,将nums列表中除了第一个值的其他值并大于等于pivot的值全部放进去,赋值给hi
也就是说此时hi=[2]
然后返回lo,pivot,hi
在quick_sort函数中:
用lo,pivot,hi变量分别接受返回的值
然后调用quick_sort函数,将lo列表传了进去
在quick_sort函数中,nums=lo:
首先,你判断了nums列表的长度
因为现在nums的长度为0,符合len(nums)<=1的条件,所以程序执行return nums
这就是第一次调用quick_sort(lo)的执行过程,quick_sort(hi)同理
太多了,我就不写了