问题:从整数集合中获取最高数字的最有效方法
我最近在讨论这个问题,我有两个解决方案.1)迭代集合并找到最大数字(下面的代码)2)使用排序算法.
第一种方法将具有O(n)效率
int getHighestNumber(ArrayList<Integer> list)
{
if(list != null && list.size() > 0)
{
if(list.size() == 1)
return list.get(0);
int maxNum = list.get(0);
for(int item:list)
{
if(item > maxNum)
maxNum = item;
}
return maxNum;
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是"任何排序算法都可以在任何给定的输入上击败它(例如,如果集合已经排序了吗?")有没有比这更好的方法?
Java使用Vector实现Stack类,为什么?虽然看起来Arraylist应该是一个更好的选择.Java希望Stack是线程安全的,或者对于一般的Stack(我认为不是这种情况)是必须的线程安全还是有任何其他理论来使用Vector来实现Java中的Stack?