对于这里的每个人来说,这种递归选择排序是什么样子的?我是不是错过了任何关于我所做的事情的“奏鸣曲”?
def selection_sort(li, out=None):
if out is None:
out = []
li = li[:]
if len(li) == 0:
return out
small = min(li)
li.remove(small)
out.append(small)
return selection_sort(li, out)发布于 2011-06-07 19:06:23
def selection_sort(li, out=None):我不喜欢“李”这个名字,我认为缩写是不好的。
if out is None:
out = []
li = li[:]我建议创建一个独立的内部函数,而不是使用out参数。否则,函数的调用方可能会合理地传递=某样东西,而它只打算在内部使用。
if len(li) == 0:
return out最好使用if not li:
small = min(li)
li.remove(small)
out.append(small)
return selection_sort(li, out)要评估这段代码有点困难,因为您正在做两件不应该做的事情,在没有必要时使用递归,并实现自己的排序例程。但如果你这样做是为了学习的目的,那也没关系。
迭代解决方案:
def selection_sort(li):
li = li[:]
out = []
while li:
smallest = min(li)
li.remove(smallest)
out.append(smallest)
return out但是,为什么这比递归解决方案更好:
https://codereview.stackexchange.com/questions/2855
复制相似问题