Finding the minimum value of int numbers in an arr

2020-05-03 12:22发布

I'm trying to find the minimum value of numbers in an array but it doesn't always work out properly. This is the code I wrote:

        for (int i=0; i < arr.length; i++ ) {
        min = arr[i];
        for (j=0; j < arr.length; j++) {
        if (arr[j] < arr[0]) {
            min = arr[j];
         }
        }
    }   

Can someone correct me please?

标签: java arrays min
9条回答
我只想做你的唯一
2楼-- · 2020-05-03 12:24

If arr is an array of non-primitive numerics, I'd recommend

java.util.Collections.min(java.util.Arrays.asList(arr));

as that will be simpler to maintain. There's some justification in reverting to hand-coding if you need to pull the minimum and maximum out at the same time but I'd advise against hand-coding loops if there's a library function available.

In any case, you ought to check arr != null and the existence of a zeroth element.

查看更多
beautiful°
3楼-- · 2020-05-03 12:25
int min = arr[0];
for(int num : arr) {
    if (num < min){
        min = num;
    }
}

min now contains minimum value.

查看更多
The star\"
4楼-- · 2020-05-03 12:30

One option is sort your array and get the first element:

import java.util.Arrays;

...

int ints[] = {30,5,7,4,10};
Arrays.sort(ints);

int min = ints[0];
int max = ints[ints.length - 1];
查看更多
爷、活的狠高调
5楼-- · 2020-05-03 12:37

There's no need for the outer loop, it only runs once and you don't use i anyway. why do you have it?

For the inner loop, you need to compare against the minimum value. Right now you are comparing it against the first element in the array, which is not necessarily the minimum value.

min = arr[0];
for (j=0; j < arr.length; j++) {
    if (arr[j] < min) {  //<---fix is here
        min = arr[j];
    }
}

Also you could start the loop at 1, since you don't need to compare arr[0] against itself (it was just assigned to min)

查看更多
Animai°情兽
6楼-- · 2020-05-03 12:37

TRY this:

int min = arr[0];
    for(int j=1;j<arr.length;j++)
    {
            if(min>arr[j])
            {
                min= arr[j];
            }
    }
    System.out.println("min no is "+min);
查看更多
淡お忘
7楼-- · 2020-05-03 12:38

A way to do it would be using the java.util.Arrays class:

Example:

public class ArraySort {
public static void main(String[] args) {
    int[] array = {12, 4, 6, 1, 56, 21, 77};
    Arrays.sort(array);
    System.out.println(array[0]);
}
}

From the Java doc, Arrays.sort(int[]) sort the specified array into ascending numerical order.

So the output here prints 1.

查看更多
登录 后发表回答