Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在一个循环中找到数组中所有对之间的最大差异_Java_Arrays_Loops_Methods_Int - Fatal编程技术网

Java 如何在一个循环中找到数组中所有对之间的最大差异

Java 如何在一个循环中找到数组中所有对之间的最大差异,java,arrays,loops,methods,int,Java,Arrays,Loops,Methods,Int,我在Java中做了一个练习,编写了一个方法(如下所示),该方法接收一个带有数字和int x的数组作为参数,如果数组中的数字对(不必按以下顺序)的绝对差值大于x,则返回true 例如,对于数组{1,5,2,18,4,2,11},我只能使用一个循环。谢谢你的帮助 公共布尔差分(int[]a,int x) 声明两个整数,一个整数可以是最大值,一个整数可以是最小值 使用一个循环来迭代数组 如果当前元素大于最小值,则使最小值等于当前元素 如果当前元素小于最大值,请使最大值等于当前元素 循环完成后,计算

我在Java中做了一个练习,编写了一个方法(如下所示),该方法接收一个带有数字和int x的数组作为参数,如果数组中的数字对(不必按以下顺序)的绝对差值大于x,则返回true

例如,对于数组{1,5,2,18,4,2,11},我只能使用一个循环。谢谢你的帮助

公共布尔差分(int[]a,int x)
  • 声明两个整数,一个整数可以是最大值,一个整数可以是最小值
  • 使用一个循环来迭代数组

    • 如果当前元素大于最小值,则使最小值等于当前元素
    • 如果当前元素小于最大值,请使最大值等于当前元素
  • 循环完成后,计算最小值和最大值之间的差值

  • 如果差值大于X,则打印消息
我没有为您编写java,因为我认为这是一个学术练习,可能是家庭作业。如果你自己做的话,你会从中学到更多的东西——把这个算法作为注释,并为它编写代码。如果你陷入困境,我们(和你的主管)会在这里帮助你。把这些评论想象成考试时监考人/导师说的“展示你的作品”——展示你的作品很重要,因为:

  • 即使是错误的实现,您仍然可以获得正确想法的分数
  • 你的导师可以看到你哪里出了问题,这也是对更好的教学和你的具体学习的反馈
  • 就像创建一个写文章的计划一样,对算法的注释有助于避免bug,并有助于防止您忘记代码的每一部分应该做什么。当我试图写一门新语言以及设计一种算法时,我很容易迷路
总是写评论

  • 声明两个整数,一个整数可以是最大值,一个整数可以是最小值
  • 使用一个循环来迭代数组

    • 如果当前元素大于最小值,则使最小值等于当前元素
    • 如果当前元素小于最大值,请使最大值等于当前元素
  • 循环完成后,计算最小值和最大值之间的差值

  • 如果差值大于X,则打印消息
我没有为您编写java,因为我认为这是一个学术练习,可能是家庭作业。如果你自己做的话,你会从中学到更多的东西——把这个算法作为注释,并为它编写代码。如果你陷入困境,我们(和你的主管)会在这里帮助你。把这些评论想象成考试时监考人/导师说的“展示你的作品”——展示你的作品很重要,因为:

  • 即使是错误的实现,您仍然可以获得正确想法的分数
  • 你的导师可以看到你哪里出了问题,这也是对更好的教学和你的具体学习的反馈
  • 就像创建一个写文章的计划一样,对算法的注释有助于避免bug,并有助于防止您忘记代码的每一部分应该做什么。当我试图写一门新语言以及设计一种算法时,我很容易迷路
总是写评论

算法: 将最小和最大变量初始化为最小和最大可能值。 循环所有元素,如果小于最小值或大于最大值,则更新相应的变量。 然后在循环结束时,将x与最大-最小值进行比较。

算法: 将最小和最大变量初始化为最小和最大可能值。 循环所有元素,如果小于最小值或大于最大值,则更新相应的变量。
然后在循环结束时,将x与最大-最小值进行比较。

这里有一个稍微不同的方法

    public static void main(String[] args) {
        int[] a = {1,2,3,4,5,6,7};
        System.out.println(difference(5,a));
    }

    static boolean difference(int[] a, int x) {
        int min = a[0];
        int max = min;
        for (int i = 1; i < a.length; i++) {
            int v = a[i];
            if (v < min) {
                min = v;
            } else if (v > max) {
                max = v;
            }
            // check here since it may not be 
            // necessary to iterate thru all values.

            if (max - min > x) {
                return true;
            }
        }    
        return false;
    }
publicstaticvoidmain(字符串[]args){
int[]a={1,2,3,4,5,6,7};
系统输出println(差分(5,a));
}
静态布尔差(int[]a,int x){
int min=a[0];
int max=min;
for(int i=1;i最大值){
最大值=v;
}
//检查这里,因为它可能不是
//需要遍历所有值。
如果(最大-最小>x){
返回true;
}
}    
返回false;
}
它通过几种方式进行了优化

  • 最小值和最大值设置为列表中的第一个元素。所以迭代从第二项开始
  • 由于不需要最大的差异,因此每次迭代时都会检查
    min和max的
    delta
    ,因为可能不需要迭代整个列表
  • 根据定义,
    max>min
    ,绝对值是隐式的,即使是负数

  • 这里有一个稍微不同的方法

        public static void main(String[] args) {
            int[] a = {1,2,3,4,5,6,7};
            System.out.println(difference(5,a));
        }
    
        static boolean difference(int[] a, int x) {
            int min = a[0];
            int max = min;
            for (int i = 1; i < a.length; i++) {
                int v = a[i];
                if (v < min) {
                    min = v;
                } else if (v > max) {
                    max = v;
                }
                // check here since it may not be 
                // necessary to iterate thru all values.
    
                if (max - min > x) {
                    return true;
                }
            }    
            return false;
        }
    
    publicstaticvoidmain(字符串[]args){
    int[]a={1,2,3,4,5,6,7};
    系统输出println(差分(5,a));
    }
    静态布尔差(int[]a,int x){
    int min=a[0];
    int max=min;
    for(int i=1;i最大值){
    最大值=v;
    }
    //检查这里,因为它可能不是
    //需要遍历所有值。
    如果(最大-最小>x){
    返回true;
    }
    }    
    返回false;
    }
    
    它通过几种方式进行了优化