PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
Python
[问题] Quick Sort陷入无穷递回
楼主:
gvi86113
(欧派欧派凯)
2018-04-15 15:25:33
版上各位前辈好,
小弟是入门者,最近教授出题要写qsort,
概念是对list选取一pivot,
比他小的都放左边,大的放右边,
如此重复,直到完整排序。
我的写法如下图:
http://i.imgur.com/PyV2XzW.jpg
最后return的时候不知道该怎么让递回关系在达到排序完毕时停止,不知道要怎么设条件,
应该说有想到用len=1做停止条件,
但不知道该放在哪里,
资质驽钝,还请各位多多指教包涵。
上网查别人写好的都需要定义很多函式再互相呼叫,还是那才是唯一解呢?
作者: hadoop (elephant)
2018-04-15 16:09:00
list长度为 1 的时候终止递回
作者:
djshen
(djshen)
2018-04-15 16:29:00
想想看长度1代表什么
作者: hadoop (elephant)
2018-04-15 16:38:00
放在第一行,直接 return 长度 1 的list
作者:
djshen
(djshen)
2018-04-15 20:03:00
分割到结果? 你再想想看吧
作者:
bowin
(尽其在我)
2018-04-15 20:18:00
base case: len==1 => return list;take pivot=list[len//2];return quicksort(list_l)+pivot+quicksort(list_u)list_l = list smaller than pivot; list_u, similarlySoory for quick typo: base case: len<=1Apology for typo: "Sorry"... =_=
作者:
TitanEric
(泰坦)
2018-04-15 21:41:00
第一次看到qsort是这样写
作者: vfgce (小兵)
2018-04-15 22:25:00
你的问题不是qsort,是你根本不会recurion......recursion要有明确的终止条件,不然就是无限执行....
作者:
mantour
(朱子)
2018-04-15 23:12:00
你的new_list = ... 那一行的右边 qsort 应该是打错了然后这一行就进入递回了 后面的if根本不会被执行到若 len(L) == 1, qsort(L) 应该 return 什么 ?
作者: Kazimir (Kazimir)
2018-04-15 23:58:00
你这样能想的清楚每一层会回传什么东西吗...?
https://ideone.com/NWnjCu
我其实也没写过 试个
继续阅读
[问题] 看似等价但出错的code求解
znmkhxrw
Re: [问题] 读取csv档不同工作表
weel99699
Re: [问题] Win10 python 3.6.1编译问题
Dmix
[问题] List 回传None
scott0528
[问题] Facebook sdk for Python的__init__
kiwistar
[问题] numpy broadcasting加速
goldflower
[问题] Pycharm抓不到我安装的module?
kiwistar
[问题] NetworkX要怎么把DataFrame读成有向图?
i329
[问题] Win10 python 3.6.1编译问题
Dmix
[问题] python 抓资料问题
corgilover
Links
booklink
Contact Us: admin [ a t ] ucptt.com