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)
该算法似乎可以找到数组的最小值.如果对arraym中包含的可能元素一无所知,则需要检查每个元素,因此性能是线性的(与数组中元素的数量成正比).
如果元素是完全有序排序的,您可以只查找第一个(或最后一个,依赖或排序)元素(恒定时间性能)
如果元素是半有序的(例如堆结构),你可以通过类似二进制搜索的技术(log(n)性能)找到它.
如果元素是无序的,但您知道它们不能小于某个值,则可以在找到可能的最小值时停止搜索.
所以回到超时问题:如果元素是无序的并且对它们没有其他限制,那么你的算法很好,所以超时必须来自程序的其他部分(例如你试图从控制台读取,但是数据在文件中)
| 归档时间: |
|
| 查看次数: |
7379 次 |
| 最近记录: |