Python 找到';凹坑';在整数列表中。快速的
我正试图编写一个程序,在列表中查找“Python 找到';凹坑';在整数列表中。快速的,python,performance,divide-and-conquer,Python,Performance,Divide And Conquer,我正试图编写一个程序,在列表中查找“pits” 整数 坑是任何整数x,其中x小于或等于整数 紧接着它的前面和后面。如果整数在开始处 或列表的末尾,仅在向内的一侧进行比较 我知道如何通过采用线性方法并沿着 然而,我对如何应用分而治之感到好奇 比较快地完成这项工作的技术。我很没有经验,而且 我真的不知道从哪里开始,我感觉像是一个类似于二进制的东西 树可以应用吗 如果相关的话,我正在使用python3。 感谢您的时间:)。如果没有关于列表中值分布的任何附加信息,则不可能实现小于O(x)的算法复杂性,其
pits
”
整数
坑是任何整数x,其中x小于或等于整数
紧接着它的前面和后面。如果整数在开始处
或列表的末尾,仅在向内的一侧进行比较
我知道如何通过采用线性方法并沿着
然而,我对如何应用分而治之感到好奇比较快地完成这项工作的技术。我很没有经验,而且 我真的不知道从哪里开始,我感觉像是一个类似于二进制的东西 树可以应用吗 如果相关的话,我正在使用
python3
。
感谢您的时间:)。如果没有关于列表中值分布的任何附加信息,则不可能实现小于O(x)的算法复杂性,其中x是列表中的元素数 从逻辑上讲,如果数据集是随机的,例如布朗噪声,则坑可能发生在任何地方,需要完全1:1的采样频率才能正确找到每个坑 即使只想找到序列中的绝对最低坑,也不可能在次线性时间内实现,而不会对结果的正确性产生影响
可以考虑优化,例如仅仅并行化或跳过与pit相邻的值,但总体复杂性将保持不变。是否有理由认为分而治之会很快?如果你试图找出所有的坑,线性是可以证明的最好的方法,因为你必须检查列表中的每一项。好奇为什么我被否决了吗?请详细说明@JeremyWest有人告诉我有一种更快的方法。我可能被误导了。如果你想找到最小的
坑,你可以使用分而治之。如果你想找到所有的坑
,你必须这样做linearly@letsc我该如何找到最小的?你可以做一些技巧来获得“更好的线性”(例如:如果我刚找到一个坑,我知道根据定义,下一个数字不是坑,我可以跳过一次迭代),但对于找到所有坑,它仍然是线性的。
For example in:
[2,1,3] 1 is a pit.
[1,1,1] all elements are pits.
[4,3,4,3,4] the elements at 1 and 3 are pits.