Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中如何从数组返回位置_Java_Arrays - Fatal编程技术网

Java中如何从数组返回位置

Java中如何从数组返回位置,java,arrays,Java,Arrays,我得到了一个数组。我需要从中获取最小值,然后返回值在数组中的位置。我是Java新手,我只有Python方面的经验。这是到目前为止我的代码 public static int minPosition (int[] list) { int currMin = list[0]; int index = list.length-1; int currPos = 0; while (index >= 0){ if (currMin > list

我得到了一个数组。我需要从中获取最小值,然后返回值在数组中的位置。我是Java新手,我只有Python方面的经验。这是到目前为止我的代码

public static int minPosition (int[] list) {
    int currMin = list[0];
    int index = list.length-1;
    int currPos = 0;

    while (index >= 0){
        if (currMin > list[index])
            currMin = list[index];
        if (currMin > list[index])
            currPos = index;

        index--;

    }
    return currPos;
}
这些是自动调用的数组

minPosition(new int[] { -7 }));
minPosition(new int[] { 1, -4, -7, 7, 8, 11 }));
minPosition(new int[] { -13, -4, -7, 7, 8, 11 }));
minPosition(new int[] { 1, -4, -7, 7, 8, 11, -9 }));
提前谢谢你的建议

    if (currMin > list[index])
        currMin = list[index];
    if (currMin > list[index])
        currPos = index;
如果第一个
条件为真,则在检查第二个条件时,
curMin
将完全等于
列表[索引]
,因此它永远不会大于

你可能想要

     if (currMin > list[index]) {
        currMin = list[index];
        currPos = index;
     }
如果第一个
条件为真,则在检查第二个条件时,
curMin
将完全等于
列表[索引]
,因此它永远不会大于

你可能想要

     if (currMin > list[index]) {
        currMin = list[index];
        currPos = index;
     }

可以添加此方法并传入整数数组。它将返回数组中具有最小值的整数的索引位置

public static int getMinIndex(int[] array) {
    int minIndex = -1;
    int currentMinValue = Integer.MAX_VALUE;
    for(int i =0; i< array.length; i++) {
        if(array[i] < currentMinValue) {
            minIndex = i;
            currentMinValue = array[i];
        }
    }
    return minIndex;
}
公共静态int getMinIndex(int[]数组){
int minIndex=-1;
int currentMinValue=Integer.MAX\u值;
for(int i=0;i
您可以添加此方法并传入整数数组。它将返回数组中具有最小值的整数的索引位置

public static int getMinIndex(int[] array) {
    int minIndex = -1;
    int currentMinValue = Integer.MAX_VALUE;
    for(int i =0; i< array.length; i++) {
        if(array[i] < currentMinValue) {
            minIndex = i;
            currentMinValue = array[i];
        }
    }
    return minIndex;
}
公共静态int getMinIndex(int[]数组){
int minIndex=-1;
int currentMinValue=Integer.MAX\u值;
for(int i=0;i
您可以使用流执行此操作:

IntStream(0, list.length).min((i1, i2) -> list[i1] - list[i2]).get();

您可以使用流执行此操作:

IntStream(0, list.length).min((i1, i2) -> list[i1] - list[i2]).get();

此解决方案不需要跟踪当前最小值。这使得代码更容易理解,并减少了出错的空间。它还从一开始就开始搜索,而您的原始代码并没有这样做。(我不知道为什么会这样,因为您可能希望第一个索引具有最小值,而不是最后一个。)

公共静态int minPosition(int[]列表){
if(list==null | | list.length=0){
返回-1;
}
int-minPos=0;
for(int i=0;i
此解决方案不需要跟踪当前最小值。这使得代码更容易理解,并减少了出错的空间。它还从一开始就开始搜索,而您的原始代码并没有这样做。(我不知道为什么会这样,因为您可能希望第一个索引具有最小值,而不是最后一个。)

公共静态int minPosition(int[]列表){
if(list==null | | list.length=0){
返回-1;
}
int-minPos=0;
for(int i=0;i
假设数组为非空数组,可以先对列表进行排序,然后从排序后的列表返回第一个。这将不像上面的一些示例那样有效,但代码将更短

public static int minPosition (int[] list) {
        Arrays.sort(list);
        return list[0];
}

假设一个非空数组,您可以首先对列表进行排序,然后从排序后的列表返回第一个。这将不像上面的一些示例那样有效,但代码将更短

public static int minPosition (int[] list) {
        Arrays.sort(list);
        return list[0];
}

别介意你是对的,我的代码里还有一个小错误。非常感谢你!别介意你是对的,我的代码里还有一个小错误。非常感谢你!来自知识不足的人的问题。将最小值存储到变量而不是在每次迭代中使用
list[minPos]
访问它不是更快吗?@Reti43它更快,但是索引数组将在O(1)时间内发生,即,无论数组有多大,它总是需要相同的时间。在当今计算速度如此之快的情况下,我更喜欢精确性而不是边际速度的提高。这个问题来自一个知识不足的人。将最小值存储到变量而不是在每次迭代中使用
list[minPos]
访问它不是更快吗?@Reti43它更快,但是索引数组将在O(1)时间内发生,即,无论数组有多大,它总是需要相同的时间。在当今计算速度如此之快的情况下,我更喜欢精度而不是边际速度的提高。问题是最小值的位置,而不是最小值的位置。您可以重写您的答案,如
返回新的ArrayList(list).indexOf(list[0])。该问题询问的是最小值的位置,而不是值。您可以重写您的答案,如
返回新的ArrayList(list).indexOf(list[0])