Java 计算3个整数中的中间整数
这一行对于计算a、b和c之间的中间整数正确吗 注:我不想计算平均值,只是中间的一个,如果这3个从最小到最小。 最大中值 示例:1、77和34的中间值为34Java 计算3个整数中的中间整数,java,math,Java,Math,这一行对于计算a、b和c之间的中间整数正确吗 注:我不想计算平均值,只是中间的一个,如果这3个从最小到最小。 最大中值 示例:1、77和34的中间值为34 适用于所有情况。我尝试了三种不同的选项,并计算了每种选项在1000000次迭代中所花费的时间 使用复合三元 对列表使用集合排序方法 使用数学最小值和最大值 它们都给出相同的结果,但2和3几乎在零毫秒内执行 性能测试 从输出来看,选项3在性能方面是最好的 三局三胜 这一行对吗 让我们逐步了解一下: return a <= b ? (c &
适用于所有情况。我尝试了三种不同的选项,并计算了每种选项在1000000次迭代中所花费的时间 使用复合三元 对列表使用集合排序方法 使用数学最小值和最大值 它们都给出相同的结果,但2和3几乎在零毫秒内执行 性能测试 从输出来看,选项3在性能方面是最好的 三局三胜 这一行对吗 让我们逐步了解一下:
return a <= b ? (c <= a ? a : c <= b ? c : b ) : c <= b ? b : c <= a ? c : a;
假设它是。。。但是很少做测试…代码工作==如果您正在寻找比这里更好的解决方案,那么您认为很少做测试是什么意思?有6种可能的顺序:a
Math.max(Math.min(a, b), Math.min(Math.max(a, b), c));
int iterationCount = 1000000; // 1 million iterations
Long t1 = Calendar.getInstance().getTimeInMillis();
for (int i = 0; i < iterationCount; i++) {
middle = a <= b ? (c <= a ? a : c <= b ? c : b) : c <= b ? b : c <= a ? c : a;
}
Long t2 = Calendar.getInstance().getTimeInMillis();
// #2 Using Collection + List + Sort
Long t3 = Calendar.getInstance().getTimeInMillis();
for (int i = 0; i < iterationCount; i++) {
List<Integer> list = Arrays.asList(a, b, c);
Collections.sort(list);
middle = list.get(1);
}
Long t4 = Calendar.getInstance().getTimeInMillis();
// #3Using Math's min and max
Long t5 = Calendar.getInstance().getTimeInMillis();
for (int i = 0; i < iterationCount; i++) {
middle = Math.max(Math.min(a, b), Math.min(Math.max(a, b), c));
}
Long t6 = Calendar.getInstance().getTimeInMillis();
System.out.println("Time Taken #1 -> " + (t2 - t1));
System.out.println("Time Taken #2 -> " + (t4 - t3));
System.out.println("Time Taken #3 -> " + (t6 - t5));
Time Taken #1 -> 16
Time Taken #2 -> 71
Time Taken #3 -> 6
middle = Math.max(Math.min(a, b), Math.min(Math.max(a, b), c));
return a <= b ? (c <= a ? a : c <= b ? c : b ) : c <= b ? b : c <= a ? c : a;