题目:
输入一个长度为10的数组,输出数组的最大值、最小值及其最大值、最小值在数组里的位置。
思路:
- 如果只需找出最大值,我们可以假定最大值max为数组的第一个元素,然后将剩余的元素逐个和max比较,如果有比max更大的元素,就将其记录下来,直到遍历比较完所有元素,此时max记录的就是数组的最大值。
然鹅,现在题目还要求我们记录最大值的位置,我们在知道最大值的情况下,无法直接获得它的数组中的位置,但是,如果我们知道的使最大值的位置,则可以轻易的得到最大值的数值,即a[max]。
- 因此,我们考虑将max存储最大值的数值,改成存储最大值的位置,再通过下标得到值。
实现:
public class FindMax {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[];
a = new int [10];
Scanner reader = new Scanner(System.in);
for(int i=0;i<10;i++)
{
a[i] = reader.nextInt(); //初始化数组
}
int min = 0; //假定最小值为a[min],即a[0]
int max = 0; 假定最大值为a[max],即a[0]
int i;
for(i=1;i<10;i++)
{
if(a[i]>a[max])
{
max = i; //max记录新的最大值的下标
}
if(a[i]<a[min])
{
min = i; //min记录新的最小值的下标
}
}
System.out.println(min); //最小值的位置
System.out.println(a[min]); //最小值的数值
System.out.println(max);
System.out.println(a[max]);
}
}
参考链接:
https://blog.miuyun.work