最佳案例时间复杂性,以检查数组是否未排序

时间:2017-06-23 12:02:59

标签: arrays algorithm sorting time-complexity

我正在尝试找出最佳案例时间复杂度,同时检查给定数组是否未排序。

我认为,这是检查数组是排序还是未排序的最快方法,这个时间复杂度应为O(n)。

L = list()

for (i in 1:ncol(data)){
  tmp = rep(data[i, 1], data[i, 2])
  mean = mean(tmp)
  stdef = sd(tmp)
  L[[i]] = cbind(mean, stdef)
}
Mx = do.call(rbind, L)
Mx

或者我错了?

2 个答案:

答案 0 :(得分:3)

是的,这需要O(n),而且是as fast as it gets

此外,你需要改变这个:

for (i = 0; i < a.length; i++)

到此:

for (i = 0; i < a.length - 1; i++)

因为您访问a[i + 1并且您不想超出界限。此外,您的退货声明应该互换。

答案 1 :(得分:0)

用于检查数组是否未排序的算法的平均和最坏情况复杂度为O(N)。但是最佳情况下的复杂度O(1)

最好的情况是当数组的前两个元素出现故障时。这是在第一次循环迭代中检测到的,并且与N无关,它花费的时间是恒定的。