为了账号安全,请及时绑定邮箱和手机立即绑定

Python关于分治排序!

Python关于分治排序!

asdhjhg 2017-04-14 13:50:59
分治排序在随机取值L[a]之后(直接取首/尾应该是最省的吧),左边都是小于L[a]的值,右边是大于L[a]的值,然后持续递归至最后一个,那么打个比方,如果右边的值正好按照顺序排好了,运气比较好!那么右边的递归还是会持续进行,哪这样一来复杂度一定程度上是增加的!这是做了重复劳动了!怎么避免或者说如何放一个记号,一旦察觉到右边或者左边正好排好了就停止,只递归另一部分就好??以下是代码!def quicksort(L):     assert type(L)==list,'An Error about the type of Arguments!Check!Check!Check!'     if len(L)<=1:         return L     return quicksort([x for x in L[1:] if x<=L[0]])\            +[L[0]]\            +quicksort([x for x in L[1:] if x>L[0]])还有一个小问题,关于Python递归深度,Python默认好像递归深度是1000,应该不到1000就警报了,为什么默认1000?我手动import sys调整好像也没啥问题啊?有什么潜在问题导致Python默认给你1000深度??
查看完整描述

目前暂无任何回答

  • 0 回答
  • 1 关注
  • 1173 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信