【发布时间】:2017-06-23 12:02:58
【问题描述】:
我试图在检查给定数组是否未排序时找出最佳情况时间复杂度。
我认为,这是检查数组是否已排序或未排序的最快方法,并且时间复杂度应该为 O(n)。
for (i = 0; i < a.length-1; i++) {
if (a[i] < a[i + 1]) {
return true;
} else {
return false;
}
}
还是我错了?
【问题讨论】:
-
只有这可能会引发错误,当您尝试访问 last 数组元素的
a[i + 1]时......循环应该只为i < a.length - 1运行(或从 1 开始,然后与a[i-1]进行比较。) -
你的代码没有考虑到正确的数组边界(条件应该是
i + 1 < a.length),你不应该在循环内返回true,因为你应该测试所有元素。 -
@CBroe 对于
a[i+1],代码将超出范围 (UB),但它永远不会超过第一次迭代。 -
这个问题不是要求最快的算法来查找数组是否已排序,而是要求最佳情况的复杂性。投票重新开放。
-
@HenkHolterman 应该很容易将一个问题称为火车失事。代码块有一个小错误,它已更新。问题的逻辑需要答案而不是代码块本身
标签: arrays algorithm sorting time-complexity