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

确认排序工作的Java方法

如何解决确认排序工作的Java方法

我有100个整数(从0到99)的数组,并且实现了Comparable接口。我现在的任务是确认排序是否有效(即使我知道可以)。我的代码是:

public static boolean confirmSorting(Guppy[] sortedArrayOfGuppies) {
    boolean confirmed = false;
    int maximumID = Integer.MAX_VALUE;
    for (Guppy guppy : sortedArrayOfGuppies) {
        if (guppy.getIdentificationNumber() < maximumID) {
            maximumID = guppy.getIdentificationNumber();
            confirmed = true;
        }
    }
    return confirmed;
}

但是即使对于未排序的数组,它也返回true。如何确保遍历数组中的每个单个对象

不幸的是,How to check if array is already sorted中提出的解决方案不起作用,并非所有int都是唯一的(有些是相同的)

解决方法

假设它们是按先后顺序排列的。然后,找到不存在的东西就立即返回。遇到第一次故障时无需继续检查。这将进行简单的验证,并且不会打印任何信息。如果按升序排序,则返回true,否则返回false。它还假定ID号是int

public static boolean confirmSorting(Guppy[] sortedArrayOfGuppies) {
    for (int i = 0; i < sortedArrayOfGuppies.length-1; i++) {
        int id1 = sortedArrayOfGuppies[i].getIdentificationNumber();
        int id2 = sortedArrayOfGuppies[i+1].getIdentificationNumber();
        if (id1 > id2) {
            return false;
        }
    }
    return true;
}

请注意,您可能希望传递comparatorflag,以便可以验证升序和降序。

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