在数组中查找第二大数字(一看数组)

时间:2016-08-28 23:45:14

标签: java arrays search

我之前做了一堂课,我们经历过这种算法,却找不到我的代码。如何在只有1次扫描的阵列中找到第二大数字?

我正在考虑使用节点,但如果最大和第二大节点从同一侧开始,那将会搞砸。一个丑陋的方法是有两个额外的临时变量,并“找到”其中较小的一个。

所以任何人都有任何提示?哦,如果你有代码,这是java。 与此同时,我将尝试在谷歌上搜索更多内容!

1 个答案:

答案 0 :(得分:0)

这是我获得第二高数字的方式:

//      The array containing number.
        int[] number = {1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10};

//      The int[] is copied to Integer[] array. This is done because the Arrays class cannot sort primitives (such as int). If any other primitive type, they can be converted to their respective objects.
        Integer[] numberInteger = new Integer[number.length];

//      Populate the Integer[] with data from int[].
        for(int i = 0; i<number.length; i++)
        {
            numberInteger[i] = number[i];
        }

//      Sort the Integer[] array in reverse order.
        Arrays.sort(numberInteger, Collections.<Integer>reverseOrder());

//      Print the result out.
        System.out.println("The second highest number is: "+numberInteger[1]);

//      Output is~~~~~~~ The second highest number is: 9

如果你有其他原始类型(例如double []),它可以复制到它的相应对象(例如Double [])。

P.S。如果使用Java 8,可以更简单地填充Integer []数组。 Streams可用于填充Integer []。

//      Instead of using a for loop, Streams are used.
        Integer[] numberInteger = Arrays.stream(number).boxed().toArray(Integer[]::new);