首页 > 解决方案 > 提高代码的执行时间,使其不会超时

问题描述

我有一段代码在某些情况下有效,但在某些情况下这需要更多时间并给出超时问题。有人可以帮忙改进吗?[编辑]:让我解释一下它是如何工作的函数接受一个列表作为输入函数返回一个列表作为输出如下:1.列表的最小数量应该在中间 2.下一个最小的数字应该附加在末尾列表 3.下一个最小的数字应该附加在列表的开头 4.下一个最小的数字应该附加在列表的末尾 5.下一个最小的数字应该附加在列表的开头 4.它继续......除非我们扫描所有输入列表

def pendulum(values):
    result=[]
    while(len(values)):       
        min_num=min(values)
        result.insert(0,min_num)
        values.remove(min_num) 
        if len(values)>0:
            min_num=min(values)
            result.insert(len(result),min_num)
            values.remove(min_num)
    return result

标签: python-3.x

解决方案


最大的问题是您的代码搜索每个元素的最小值。预先对列表进行排序将使其更快。您还在列表的前面插入,这会强制移动列表中的每个元素,对于每个其他元素。为了解决这个问题,我只使用append,然后反转列表的前半部分。

def pendulum(values):
    front = []
    back = []
    next_goes_to_front = True
    for value in sorted(values):
        if next_goes_to_front:
            front.append(value)
        else:
            back.append(value)
        next_goes_to_front = not next_goes_to_front
    return list(reversed(front)) + back

推荐阅读