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