在没有Arrays.sort的Java中查找数组列表中的最小整数值

时间:2013-12-14 16:43:53

标签: java arrays algorithm integer

如何在不更改数组顺序的情况下找到int数组中的最小值?

代码段:

    int[] tenIntArray = new int [10];
    int i, userIn;

    Scanner KyBdIn = new Scanner(System.in);
    System.out.println("Please enter 10 integer numbers ");

    for(i = 0; i < tenIntArray.length; i++){
        System.out.println("Please enter integer " + i);
        userIn = KyBdIn.nextInt();
        tenIntArray[i] = userIn;
    }

我不知道如何在tenIntArray中找到最小的数组值并显示位置

例如,数组成立 - [50, 8, 2, 3, 1, 9, 8, 7 ,54, 10]

输出应该说“The smallest value is 1 at position 5 in array

7 个答案:

答案 0 :(得分:15)

This数字应该会有所帮助:

enter image description here

然后回答你的问题,你会在纸上做什么?

  1. tenIntArray[0]
  2. 处创建并初始化最小值
  3. 创建一个变量来保存数组中min值的索引并将其初始化为0(因为我们在1.中说{min} tenIntArray[0]初始化
  4. 遍历数组的元素
  5. 如果找到的元素低于当前min,请使用此元素更新最小值,并使用此元素的相应索引更新索引
  6. 你已经完成了
  7. 现在编写算法应该很简单。

答案 1 :(得分:4)

试试这个:

//Let arr be your array of integers
if (arr.length == 0)
    return;
int small = arr[0];
int index = 0;
for (int i = 0; i < arr.length; i++) {
    if (arr[i] < small) {
        small = arr[i];
        index = i;
    }
}

答案 2 :(得分:1)

我建议的方法会找到minmax

public static void main(String[] args) {
    findMinMax(new int[] {10,40,50,20,69,37});
}
public static void findMinMax(int[] array) {
    if (array == null || array.length < 1)
        return;
    int min = array[0];
    int max = array[0];

    for (int i = 1; i <= array.length - 1; i++) {
        if (max < array[i]) {
            max = array[i];
        }

        if (min > array[i]) {
            min = array[i];
        }
    }
    System.out.println("min: " + min + "\nmax: " + max);
}

显然,这不是最优化的解决方案之一,但它适合您。它使用简单比较来跟踪minmax值。输出是:

min: 10 max: 69

答案 3 :(得分:1)

使用 Java 8 Streams,您可以创建一个二元运算符,它比较两个整数并返回其中最小的整数。

让arr是你的数组

{{1}}

答案 4 :(得分:0)

    int[] input = {12,9,33,14,5,4};

    int max = 0;
    int index = 0;
    int indexOne = 0; 
    int min = input[0];
    for(int i = 0;i<input.length;i++)
    {
        if(max<input[i])
        {
            max = input[i];
            indexOne = i;
        }

        if(min>input[i])
        {
            min = input[i];
            index = i;
        }

    }
    System.out.println(max);
    System.out.println(indexOne);
    System.out.println(min);
    System.out.println(index);

答案 5 :(得分:0)

这是函数

public int getIndexOfMin(ArrayList<Integer> arr){
    int minVal = arr.get(0); // take first as minVal
    int indexOfMin = -1; //returns -1 if all elements are equal
    for (int i = 0; i < arr.size(); i++) {
        //if current is less then minVal
        if(arr.get(i) < minVal ){
            minVal = arr.get(i); // put it in minVal
            indexOfMin = i; // put index of current min
        }
    }
    return indexOfMin;  
}

答案 6 :(得分:-2)

数组的第一个索引为零。不是一个。

for(i = 0; i < tenIntArray.length; i++)

所以纠正这个。 你问的代码是:

    int small = Integer.MAX_VALUE;
    int i = 0;
    int index = 0;
    for(int j : tenIntArray){
        if(j < small){
            small = j;
            i++;
            index = i;
        }
    }
    System.out.print("The smallest value is"+small+"at position"+ index +"in array");