确认排序工作的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,以便可以验证升序和降序。