我正在编写代码来检查我的数组是按升序还是降序排列。如果布尔值“升序”为真,那么我检查它是否是升序。如果是假,那么我检查是否下降。我需要帮助检查数组是否正在下降...我有检查升序的代码,如下所示:
protected boolean isSorted(boolean ascending) {
boolean result = false;
if (ascending) {
for (int i=0;i<data.length-1;i++) {
if(data[i] < data[i+1]) {
result = true;
} else if(data[i] > data[i+1]) {
result = false;
}
}
} else {
//code to check for descending order
}
}
答案 0 :(得分:12)
if
的第一部分(“升序”检查)是错误的,它应该是:
for (int i = 0; i < data.length-1; i++) {
if (data[i] > data[i+1]) {
return false;
}
}
return true;
相反,降序检查应该是(并注意它足以改变比较运算符的方向):
for (int i = 0; i < data.length-1; i++) {
if (data[i] < data[i+1]) {
return false;
}
}
return true;
在这两种情况下,只要找到不包含升序或降序属性的单个数字对,就必须退出循环,并且只返回{{1循环退出后。
答案 1 :(得分:3)
如果你愿意,你可以在一个循环中作弊并删除一个添加:
protected boolean isSorted(boolean ascending) {
for (int i = 1; i < data.length; i++) {
if (data[i-1] == data[i]) {
continue;
}
if ((data[i-1] > data[i]) == ascending) {
return false;
}
}
return true;
}
注意:我正在建立@OscarLopez的代码,所以如果你支持我的话,那就投票给他。
答案 2 :(得分:0)
要检查ArrayList<Integer>
是否按降序排列,请尝试以下操作:
boolean isSorted(ArrayList<Integer> list){
boolean sorted = true;
for (int i = 1; i < list.size(); i++) {
if (list.get(i-1) >= (list.get(i)) ) {
sorted = true;
} else {
return false;
} // if else ends
} // for "i" ends
return sorted;
}