Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 找到';凹坑';在整数列表中。快速的_Python_Performance_Divide And Conquer - Fatal编程技术网

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.