我正在处理 long int 数据,我试图确定数组中的最小元素。我知道循环遍历数组以找到最小值的传统方法。本题是检查是否有其他方法可以加速。
这个数组的一些属性可能会帮助我们加快速度,但我不确定如何。
数组恰好有 8 个 long int 整数。每次我们调用该函数时,我们都会从数组中找到一个最小值,并将该数字替换为另一个数字,然后重复此步骤。 (至少80亿次)
我正在考虑以某种方式记住下一次迭代的第二大数字(因为我们将在当前迭代中比较它们)。与遍历数组的线性实现相比,这是否有用?
也允许排序,但我们必须使用临时数组以某种方式记住原始位置。这样会不会更有效。
还有可能以某种方式使用 SIMD 来确定长整数的最小值吗?即使是毫秒级的加速也很有用,因为我要执行此操作数十亿次。
最佳答案
具有 8 个元素的数组的算法的理论复杂性几乎无关紧要。线性搜索很可能是您的最佳选择,考虑到缓存位置和所有因素。
另一种选择是将数组按降序排序一次,然后每次都简单地替换第一个元素,最后将新数字向右移动。
无论如何,请尝试分析。
关于c++ - 在非常小的数组中找到最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31510468/