如何在不更改数组顺序的情况下找到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
”
答案 0 :(得分:15)
This数字应该会有所帮助:
然后回答你的问题,你会在纸上做什么?
tenIntArray[0]
tenIntArray[0]
初始化现在编写算法应该很简单。
答案 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)
我建议的方法会找到min
和max
。
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);
}
显然,这不是最优化的解决方案之一,但它适合您。它使用简单比较来跟踪min
和max
值。输出是:
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");