Python中的环绕检测

Bob*_*Bob 0 python overflow

假设你有一个按递增顺序排列的值列表,除了在某些时候它们是wrap-wround

2,4,6,9,12,15,34,-2,1,4,5,7 ......

知道周期为2 ^ n,对于n的某个值,是否存在任何内置函数,或者是重新排列上述值的快速方法,以便所有数字按递增顺序排列(假设数字是可能的)?

lio*_*ori 5

list.sort()可能足够快.在CPython中,它是使用Timsort实现的,Timsort应该以比平均值更好的方式处理像你这样的情况(第一阶段正在查找已经排序的数字运行,就像你的情况一样).

  • 事实上,Timsort的最佳表现恰好出现在这种情况下.这里的排序应该非常接近O(n). (3认同)