java - 如何找到复数数组 a + ci 中的最小值

标签 java arrays random

我正在尝试编写一个方法来查找复数 a + ci 数组中的最小值,其中 a 和 c 都是 double 。 a 是实部,ci 是虚部。我试图让它遍历数组并比较每个对象 a + ci 和 b + di。我将从比较实部开始,如果实部相等,那么我将继续讨论虚部,这样如果 a < b 或 if (a==b), c < d,complexNumberOne

到目前为止,我有一个方法可以确定数组中的最小数字,但只能通过比较实部:

import java.util.Scanner;
import java.util.Random;

private boolean arrayTest = false;

public double min(Complex[] arr) {
    double min = Double.MIN_VALUE;
    for(int i = 0; i < arr.length;i++) {
        if(arr[i].getReal() < min) {
            min = arr[i].getReal();
        }
    }
    return min;
}

但是我根据上述条件找到最小元素的方法似乎行不通:

public Complex smallest(Complex[] arr) {

    Complex min = new Complex();

    for(int i = 0; i < arr.length;i++) {
        while(!arrayTest) {
            if(arr[i].getReal()<arr[i+1].getReal()) {
                arrayTest=true;
                min = arr[i];
            }else if(arr[i].getReal()==arr[i+1].getReal()) {
                while(!arrayTest) {
                    if(arr[i].getImaginary()<arr[i+1].getImaginary()) {
                        arrayTest=true;
                        min = arr[i];
                    }
                }
            }
        }
    }
    return min;
}

最佳答案

为什么有这么多循环和嵌套循环?
对数组进行一次扫描即可:

public Complex smallest(Complex[] arr) {
    if (arr.length == 0) return null;

    Complex min = arr[0];

    for (int i = 1; i < arr.length; i++) {
        if (arr[i].getReal() < min.getReal()) {
            min = arr[i];
        } else if (arr[i].getReal() == min.getReal()) {
            if (arr[i].getImaginary() < min.getImaginary()) {
                min = arr[i];
            }
        }
    }
    return min;
}

此外,也不需要 boolean 标志arrayTest
如果您不介意长条件,则可以进一步简化代码:

public Complex smallest(Complex[] arr) {
    if (arr.length == 0) return null;

    Complex min = arr[0];

    for (int i = 1; i < arr.length; i++) {
        if (arr[i].getReal() < min.getReal() || (arr[i].getReal() == min.getReal() && arr[i].getImaginary() < min.getImaginary())) {
            min = arr[i];
        }
    }
    return min;
}

关于java - 如何找到复数数组 a + ci 中的最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56657718/

相关文章:

java - 使用本教程尝试为 Android 创建 Twitter 应用程序

python - Python中给定PDF的随机数

java - NullPointer 异常存储库 Spring Boot Jpa

java - 如何解决 JBoss 中的 OutOfMemoryError 错误?

arrays - 用列表和元组索引 Numpy 数组会给出不同的结果?

php - 如何从嵌套结果数组中分割时间戳中的时间?

c - 我不明白为什么我的冒泡排序代码不起作用

algorithm - 生成随机非奇异整数矩阵

testing - 在顽固的测试套件中使用包含随机数的 .txt 文件

java - 文件上传流从哪里获取内容?