Java 数组中最大和最小数字的位置
我不知道如何得到数组中最大和最小数字的索引位置。有人能帮我吗? 我的代码:Java 数组中最大和最小数字的位置,java,data-structures,hashmap,Java,Data Structures,Hashmap,我不知道如何得到数组中最大和最小数字的索引位置。有人能帮我吗? 我的代码: int[]数组={4,2,7,6,-3,-1,-2,42,0,-42,9,-4,5,-6,-7,-8,-99,42,11,20,1,2,3}; int最小=数组[0]; int最大=数组[0]; for(int i=1;i最大值){ 最大=数组[i]; }else if(数组[i]
int[]数组={4,2,7,6,-3,-1,-2,42,0,-42,9,-4,5,-6,-7,-8,-99,42,11,20,1,2,3};
int最小=数组[0];
int最大=数组[0];
for(int i=1;i最大值){
最大=数组[i];
}else if(数组[i]<最小值)
最小=数组[i];
}
System.out.println(“最大:”+最大);
System.out.println(“最小:”+最小);
我已经有了最大和最小的数字,但是我如何才能找到索引位置。这应该行得通
int[] array = {4, 2, 7, 6, -3, -1, -2, 42, 0, -42, 9, -4, 5, -5, -6, -7, -8, -99, 42, 11, 20, 1, 2, 3};
int si, smallest = array[si = 0];
int li, largest = array[li = 0];
for (int i = 1; i < array.length; i++) {
if (array[i] > largest) {
largest = array[li = i];
} else if (array[i] < smallest) {
smallest = array[si = i];
}
}
System.out.println("Largest: " + li);
System.out.println("Smallest: " + si);
int[]数组={4,2,7,6,-3,-1,-2,42,0,-42,9,-4,5,-6,-7,-8,-99,42,11,20,1,2,3};
int-si,最小值=数组[si=0];
int li,最大=数组[li=0];
for(int i=1;i最大值){
最大=数组[li=i];
}else if(数组[i]<最小值){
最小=阵列[si=i];
}
}
System.out.println(“最大:+li”);
System.out.println(“最小:+si”);
或更容易阅读:
int[] array = {4, 2, 7, 6, -3, -1, -2, 42, 0, -42, 9, -4, 5, -5, -6, -7, -8, -99, 42, 11, 20, 1, 2, 3};
int si = 0, smallest = array[0];
int li = 0, largest = array[0];
for (int i = 1; i < array.length; i++) {
if (array[i] > largest) {
largest = array[i];
li = i;
} else if (array[i] < smallest) {
smallest = array[i];
si = i;
}
}
System.out.println("Largest: " + li);
System.out.println("Smallest: " + si);
int[]数组={4,2,7,6,-3,-1,-2,42,0,-42,9,-4,5,-6,-7,-8,-99,42,11,20,1,2,3};
int si=0,最小值=数组[0];
int li=0,最大=数组[0];
for(int i=1;i最大值){
最大=数组[i];
li=i;
}else if(数组[i]<最小值){
最小=数组[i];
si=i;
}
}
System.out.println(“最大:+li”);
System.out.println(“最小:+si”);
再创建两个变量来存储最大索引和最小索引,现在每当您在if-else语句中为最小和最大赋值时,也会为i赋值
int smallestInd = 0;
int largestInd = 0;
for (int i = 1; i < array.length; i++){
if (array[i] > largest) {
largest = array[i];
largestInd = i;
} else if (array[i] < smallest)
smallest = array[i];
smallestInd = i;
}
int smallestInd=0;
int-largestInd=0;
for(int i=1;i最大值){
最大=数组[i];
最大值=i;
}else if(数组[i]<最小值)
最小=数组[i];
smallestInd=i;
}
这里有一个有趣的方法,但它不是很有效,因为它需要对值进行排序。基本上,生成所有可能的索引,然后根据实际数组值对它们进行排序。结果数组的第一个和最后一个元素将分别是最小和最大位置
int[] array = { 4, 2, 7, 6, -3, -1, -2, 42, 0, -42, 9, -4, 5,
-5, -6, -7, -8, -99, 42, 11, 20, 1, 2, 3 };
Integer[] arr = IntStream.range(0, array.length).boxed()
.sorted(Comparator.comparingInt(a -> array[a]))
.toArray(Integer[]::new);
System.out.println("Index for min = " + arr[0]);
System.out.println("Index for max = " + arr[arr.length-1]);
印刷品
Index for min = 17
Index for max = 18
你认为
i
会给你什么?你不仅需要记住最大的
和最小的
,而且在存储它们的同时还要存储一个indexofragest=i代码>和indexOfLowest=i
。只需将索引位置写入最大的
和最小的
。然后,在打印结果时,可以使用保存的索引位置从数组中检索最小值和最大值。
Index for min = 17
Index for max = 18