获得阵列中前5名的最低价值

时间:2016-02-23 18:34:50

标签: java arrays

我有一个Java程序,它将使用这种算法从数组(disCent)输出前5个最低值。这是我的代码:

   Arrays.sort(distCent);
  System.out.println(Arrays.asList(distCent));

感谢您就使用排序提出的建议。我已经修改了上面的代码。现在,如何从原始列表中检查排序列表中前5个值的位置,以便输出应该是这样的:

Smallest is at x position with value of y.
2nd smallest is at x position with value of y....and so on.

3 个答案:

答案 0 :(得分:3)

使用sort()方法按升序获取值,然后抓住前五个。

Arrays.sort( array );

如果你需要原始数组中的位置,那么得到排序数组的前五个值的索引。

答案 1 :(得分:0)

正如其他答案所述,您应该使用Arrays.sort方法。你真的不应该为这个基本的东西重新发明轮子。

但是,如果您由于某种原因无法使用Arrays方法,并且/或者对排序抱有病态仇恨,则以下代码应该按您的要求执行:

public static void lowest5(int[] args){
    int[][] ret = {{Integer.MAX_VALUE,0},{Integer.MAX_VALUE,0},{Integer.MAX_VALUE,0},{Integer.MAX_VALUE,0},{Integer.MAX_VALUE,0}}; \\There are much better ways to do this
    for(int i = 0; i < args.length;i++){
        int swapper = args[i]
        int swapper_index = i;
        for(int n = 0; n < 5;n++){
            if(swapper < ret[n][0]){
                swapper ^= ret[n][0]; \\this is a neat trick for swapping in place
                ret[n][0] ^= swapper; \\b ^ (a^b) = a
                swapper ^= ret[n][0]; \\ a ^ (a^b) = b

                swapper_index ^= ret[n][1];
                ret[n][1] ^= swapper_index;
                swapper_index ^= ret[n][1];
            }
        }
    }
    //print ret
}

答案 2 :(得分:0)

假设你安装了最新的JDK,那应该很简单:

    final int[] ints = {1, 3, 6, -10, 43, 100};
    final int[] just5 = Arrays.stream(ints).sorted().limit(5).toArray();
    System.out.println(Arrays.toString(just5));

即使少于5件物品也能正常工作。 (来自java.util.Arrays的数组)