我有一个100 int(从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。如何确保遍历数组中的每个对象?
不幸的是,"如何检查数组是否已经排序"中提出的解决方案不起作用,并非所有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;
}
请注意,您可能希望传入comparator
或flag
,以便验证升序和降序。