当前位置: 首页 > 知识库问答 >
问题:

求最大值和最小值,以及它们在数组中出现的次数。找出最大值首先出现和最小值最后出现的位置

漆雕和昶
2023-03-14
    import java.util.Arrays;
import java.util.Scanner;

public class A8HW1{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.print("Enter array length: ");
        int size = sc.nextInt();
        
        int [] array = new int[size];
        
        for(int i = 0; i < size; i++)
              array[i] = (int) (Math.random() * ((100 - 0) + 1)) + 0;
        
        System.out.println( "\n" +Arrays.toString(array));
        
        Max_Or_Min(array);
    }
    
    public static void Max_Or_Min(int [] array)
    {
        if(array.length == 1)
        {
             System.out.println("Min = " + array[0]);
             System.out.println("Max = " + array[0]);
        }
        else
        {
           int Max,Min = 0;
        
           if(array[0] > array[1])
             {
               Min =  array[1];
               Max =  array[0];
             }
           else
             {
               Min = array[0];
               Max = array[1];
             }
        
            for(int i = 2; i < array.length; i++)
               {
                  if(array[i] > Max)
                  Max = array[i];
            
                  else if(array[i] < Min)
                  Min = array[i];
        }
        
            System.out.println("Max = " + Max);
            System.out.println("Min = " + Min);
            
            Occurrence(array, Max, Min);
       }
    }
    
    public static void Occurrence(int [] array, int Max, int Min)
    {
        int count = 0,times = 0, Min_idx = 0;
        for(int i = 0; i < array.length; i++)
        {
            if(array[i] == Max)
            {
                count++;
            }
            if(array[i] == Min)
            {
                times++;
                Min_idx = i;
            }
        }
        System.out.println("\nFirst Maximum Occurred on position = ");
        System.out.println("Last Minimum Occurred on position = " + (Min_idx + 1));
        
        String x = (count > 1) ? "times." : "time.";
        System.out.println("Maximum Occurred = " + count + " " + x);
        
        String y = (times > 1) ? "times." : "time.";
        System.out.println("Minimum Occurred = " + times + " " + y);
    }
    
}

共有1个答案

谢海阳
2023-03-14

在你的答案中,你在数组中循环了两次。你实际上可以避免。

这里,我重新编写了max_or_min方法。还请注意,您不再需要concertion方法。

public static void Max_Or_Min(int [] array) {
    int min = Integer.MAX_VALUE;
    int max = Integer.MIN_VALUE;

    int min_count = 1;
    int max_count = 1;

    int max_first_occurs = -1;
    int min_last_occurs = -1;

    int i = 0;

    for (int x: array) {
        if (x > max) { max = x; max_count = 1; max_first_occurs = i; }
        else if (x == max) { max_count++; }

        if (x < min) { min = x; min_count = 1; min_last_occurs = i; }
        else if (x == min) { min_count++; min_last_occurs = i; }

        i ++;
    }

    System.out.println("Max: " + max);
    System.out.println("Min: " + min);

    System.out.println("Max count: " + max_count);
    System.out.println("Min count: " + min_count);

    System.out.println("Max first occurs at: " + max_first_occurs);
    System.out.println("Min last occurs at: " + min_last_occurs);
}

注意:max_first_occursmin_last_occurs索引表示数组中的位置,通常以0开始

 类似资料:
  • 主要内容:普通算法,分治算法程序中,我们经常使用数组(列表)存储给定的线性序列(例如 {1,2,3,4}),那么如何查找数组(序列)中的最大值或者最小值呢? 查找数组(序列)中最大值或最小值的算法有很多,接下来我们以 {3,7,2,1} 序列为例讲解两种查找最值的算法,一种是普通算法,另一种是借助 分治算法解决。 普通算法 普通算法的解决思路是:创建两个变量 max 和 min 分别记录数组中的最大值和最小值,它们的初始值都

  • 这是一个非常基本的算法(不能再简单了),但我被难住了。我们有一个元素数组,我们必须确定最小值和最大值。 通常的方法是遍历数组,找出最小值和最大值,即2n比较。 稍微有效的方法是首先对数组的连续元素进行比较,以确定任意两个元素的最大值和最小值(N/2比较)。我们现在有n/2 min和n/2 max元素。现在我们可以在n/2+n/2+n/2(前一步)=3/2*n或1.5n中得到最终的max和min 那

  • 问题内容: 我的代码没有给出错误,但是没有显示最小值和最大值。代码是: 我是否需要system.out.println()来显示它,否则返回应该起作用吗? 问题答案: 您正在调用方法,但不使用返回的值。

  • 我想从数组的一部分找到最大值和最小值。我知道我可以通过复制数组将所需的数组部分复制到另一个数组中,但只是想知道是否可以不复制数组,因为我必须为不同的子数组进行循环 例如: 现在我想从1到4找到子数组的最小/最大值(如果可能,不复制子数组)

  • 问题内容: 我想输出二维数组的最大值和最小值。Max可以很好地工作,但是即使在数组中没有零的情况下min也总是输出零。在本例中,我设置为99以防止较小的机会在数组中获得零。继承人完整代码: 问题答案: 由于您在中选择随机值的方式,不会存在小于零的值- 但也无法保证任何值都将恰好为零。但是,您将初始化为零,因为这是数组元素的默认值;没有什么比这更小了,所以答案总是零。 您应该在标记为“查找最小值”的

  • 本文向大家介绍Powershell小技巧之找出最大最小值,包括了Powershell小技巧之找出最大最小值的使用技巧和注意事项,需要的朋友参考一下 要找出对象的最大最小值,请使用Measure-Object: 它支持多个数据并且还支持不通的数据类型,这里将它小小的修改就能返回WINDOWS目录下最近新创的文件: 只需要设置对象其中的一个属性就能够查看你想要的信息。 支持所有PS版本