快速排序主函数的return

快速排序主函数的return

老师好!我有个关于快速排序主函数中是否应该加return的问题(下面是我的python code)。您在视频中没有return,我理解,在python中,数组list是mutable type,所以不需要return原数组?但是,我的程序中,如果不加入```return nums```,返回的却是一个None; 加入了return nums,才能正确返回sorted list。


我不确定问题出在哪里?能否请您点拨一二?谢谢!

def QuickSort(nums, l, r):
if l >= r:
return None

p = Partition(nums, l, r)

QuickSort(nums, l, p-1)
QuickSort(nums, p+1, r)
return nums



def Partition(nums, l, r):

marker = nums[l]
j = l

for k in range(j+1,r+1):
if nums[k] <= marker:
j += 1
nums[k], nums[j] = nums[j], nums[k]
nums[l], nums[j] = nums[j], nums[l]

return j


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
liuyubobobo 2021-08-20 03:29:35

是的,课程中的快速排序是原地排序。原地排序的意思就是,不是通过返回值来得到排序结果,而是直接在传入的 nums 参数中进行操作,得到排序结果。


Python 里同理,返回值虽然是 None,但你可以打印输出一下经过快排函数的 nums,应该已经排好序了。


你当然可以做成“不修改原数组,返回一个排好序的新数组的快速排序”,其实很简单,把传来 nums 先做一份拷贝 nums_copy,然后对 nums_copy 做原地块排,返回 nums_copy 就好。


继续加油!:)

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
算法与数据结构
  • 参与学习       2583    人
  • 解答问题       1082    个

慕课网算法名师Liuyubobobo,5年集大成之作 从0到工作5年,算法与数据结构系统解决方案

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师