如何使递归排序列表功能起作用?

时间:2016-11-20 12:40:12

标签: python sorting

我正在尝试制作列表排序算法,而不使用Python的排序。到目前为止我有这个:

{{1}}

但是,处理重复输入的列表时遇到问题。我假设这是因为你可以根据事物是否更大或更少来继续扩展列表的程序,如果它运行到具有相同值的相同值的东西,它会破坏该过程。但是,我不确定如何解决它,所以有更好的方法来做到这一点,或者我必须使用不同的方式(在这一点上使用min是我最好的选择)?任何提示将不胜感激。

1 个答案:

答案 0 :(得分:0)

def order(lst):
    count = 0 #this is the count of how many times we've seen a repeated digit
    def helper(lst):
        nonlocal count
        if len(lst) <= 1:
            return lst
        lst_without_min = []
        for x in lst:
            if count < 1 and x == min(lst): #okay, we've already seen the minimum digit once, if it's repeated again keep it in there
                count += 1
            else:
                lst_without_min.append(x)
        return [min(lst)] + order(lst_without_min)
    return helper(lst)

这是一个非常长且可能效率低下的工作解决方案,但它确实有效。