选择C算法有什么问题

时间:2014-05-05 01:58:31

标签: algorithm sorting

  1. 考虑以下方法isSorted,如果整数数组按非递减顺序排序,则返回true,否则返回false。
  2.   

    @return如果数组中的值以排序(非递减)顺序显示

    ,则为true
    public static boolean isSorted(int[] data)
    {
        /* missing code */ 
    }
    

    以下哪项可用于替换/ *缺少代码* /以便isSorted按预期工作?

    予。

    for (int k = 1; k < data.length; k++) {
        if (data[k - 1] > data[k])
            return false;
    }
    return true;
    

    II。

    for (int k = 0; k < data.length; k++) {
        if (data[k] > data[k + 1])
            return false;
    }
    return true;
    

    III。

    for (int k = 0; k < data.length - 1; k++) {
        if (data[k] > data[k + 1])
            return false;
        else
            return true;
     }
     return true;
    

    (A)我只有 (B)II只有 (C)III只有 (D)I和II只有 (E)仅限I和III

    解决方案是A,但是,我不明白为什么选择III不起作用。我的答案是E,解决方案是A。

1 个答案:

答案 0 :(得分:1)

III是错误的,因为从第一次迭代开始return(当k = 0时)

for (int k = 0; k < data.length - 1; k++) {
if (data[k] > data[k + 1]) // it either return true or false from the first iteration
    return false; // from first iteration, this can return false
 else
    return true; // if the previous didn't return true, this for sure will return false
 }
 return true;

因此,不是比较整个数组元素,所以III是错误的