Java中最小的数组元素

spe*_*ial 4 java algorithm collections performance

我有一个Integer数组value[].它可以是任何长度.

我需要找到最小的数字.我正在采访街道上的一个问题.我的时间超过,我收到错误.随着迭代变得更糟,我需要提高计算最小值的速度.

我对使用Java集合或其他任何东西感兴趣,所以任何人都会提出一些改进代码的建议.

int mini=value[0];
for (int i = 1; i < noinps; i++) {
    if(mini>value[i]) {
        mini=value[i];
    }
}
System.out.println(mini);
Run Code Online (Sandbox Code Playgroud)

Pet*_*hev 9

没有更好的算法来查找数组中的最小或最大元素.你必须看看每个元素.也许你在其他地方浪费时间 - 例如阅读输入.


Att*_*ila 6

该算法似乎可以找到数组的最小值.如果对arraym中包含的可能元素一无所知,则需要检查每个元素,因此性能是线性的(与数组中元素的数量成正比).

如果元素是完全有序排序的,您可以只查找第一个(或最后一个,依赖或排序)元素(恒定时间性能)

如果元素是半有序的(例如堆结构),你可以通过类似二进制搜索的技术(log(n)性能)找到它.

如果元素是无序的,但您知道它们不能小于某个值,则可以在找到可能的最小值时停止搜索.

所以回到超时问题:如果元素是无序的并且对它们没有其他限制,那么你的算法很好,所以超时必须来自程序的其他部分(例如你试图从控制台读取,但是数据在文件中)