微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

您能告诉我我的代码在数组中找到最大和最小元素是否足够有效吗?

如何解决您能告诉我我的代码在数组中找到最大和最小元素是否足够有效吗?

代码的效率和时间的复杂性?我正在运行if和else语句的while循环,以查找最大和最小的整数,而不是for循环。我只想知道我的代码是否足够有效,或者我需要使用for循环,我还想知道是否存在任何快捷方式查找像for循环这样的时间复杂度-它是n ^ 2,而循环-n以及O(log(n))和O(log(n))的示例以及如何找到它们也将有所帮助。

public static void main(String[] args) {
    Scanner scan = new Scanner(system.in);
    System.out.println("Enter number of values in an array : ");
    int n = scan.nextInt();
    int[] arr = new int[n];
    System.out.println("Enter values in an araay :");
    for (int i = 0; i < arr.length; i++) {
        arr[i] = scan.nextInt();
    }
    int i = 0;
    int j = 0;
    int k = 0;
    while (i < n && j < n) {
        if (arr[i] > arr[i + 1]) {
            j = arr[i];
            k = arr[i + 1];
        } else if (arr[i] < arr[i + 1]) {
            j = arr[i + 1];
            k = arr[i];
        }

        i++;
    }
    System.out.println("the largest element is : " + j);
    System.out.println("the smallest element is : " + k);

}

解决方法

您的代码比应该的要复杂。不仅如此,它似乎无法正常工作。
下面介绍一种找到最小/最大数量的方法

import java.util.Scanner;

public class MyClass{
  public static int findMax(int[] array){
     int max = int[0];
     for(int i = 1; i < array.length; i++){
         if(array[i] > max){
           max = array[i];
         }
      }
      return max;
  }

  public static int findMin(int[] array){
     int min = int[0];
     for(int i = 1; i < array.length; i++){
         if(array[i] < min){
           min = array[i];
         }
      }
      return min;
  }

  public static void main(String[] args){
    Scanner scan = new Scanner(System.in);
    System.out.println("Enter number of values in an array : ");
    int n = scan.nextInt();
    int[] arr = new int[n];
    System.out.println("Enter values in an Araay :");
    for (int i = 0; i < arr.length; i++) {
        arr[i] = scan.nextInt();
    }
    System.out.println("Max: " + findMax(arr));
    System.out.println("Min: " + findMin(arr));
   }
  }
,

您的代码无法正常工作,没有提供正确的值。 除非您想从头开始编写所有代码,否则还有其他方法。 看一下以下内容,实际上是O(n^2)的排序:

for (int i = 0; i < arr.length; i++) {
    arr[i] = scan.nextInt();
}
Arrays.sort(arr);
System.out.println("min: "  + arr[0] + " max: " + " " + arr[arr.length - 1];

OR (如果重要的是您自己实现),则可以使用O(n)(仅循环一次)来实现。

int min = arr[0],max = arr[0];
for(int i= 0; i < arr.length; i++) {
  if(arr[i] < min) min = arr[i];
  if(arr[i] > max) max = arr[i];
}
System.out.println("min: " + min + " max: " + max);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。