检查数组是否按降序排列

时间:2013-08-01 22:04:29

标签: java arrays algorithm

我正在编写代码来检查我的数组是按升序还是降序排列。如果布尔值“升序”为真,那么我检查它是否是升序。如果是假,那么我检查是否下降。我需要帮助检查数组是否正在下降...我有检查升序的代码,如下所示:

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
    }
}

3 个答案:

答案 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;
}