Java 计算3个整数中的中间整数

Java 计算3个整数中的中间整数,java,math,Java,Math,这一行对于计算a、b和c之间的中间整数正确吗 注:我不想计算平均值,只是中间的一个,如果这3个从最小到最小。 最大中值 示例:1、77和34的中间值为34 适用于所有情况。我尝试了三种不同的选项,并计算了每种选项在1000000次迭代中所花费的时间 使用复合三元 对列表使用集合排序方法 使用数学最小值和最大值 它们都给出相同的结果,但2和3几乎在零毫秒内执行 性能测试 从输出来看,选项3在性能方面是最好的 三局三胜 这一行对吗 让我们逐步了解一下: return a <= b ? (c &

这一行对于计算a、b和c之间的中间整数正确吗

注:我不想计算平均值,只是中间的一个,如果这3个从最小到最小。 最大中值

示例:1、77和34的中间值为34


适用于所有情况。

我尝试了三种不同的选项,并计算了每种选项在1000000次迭代中所花费的时间

使用复合三元 对列表使用集合排序方法 使用数学最小值和最大值 它们都给出相同的结果,但2和3几乎在零毫秒内执行

性能测试

从输出来看,选项3在性能方面是最好的

三局三胜

这一行对吗

让我们逐步了解一下:

return a <= b ? (c <= a ? a : c <= b ? c : b ) : c <= b ? b : c <= a ? c : a;

假设它是。。。但是很少做测试…代码工作==如果您正在寻找比这里更好的解决方案,那么您认为很少做测试是什么意思?有6种可能的顺序:aMath.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;