我有一个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.
答案 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的数组)