以下片段的最佳和最坏情况是什么?
What is the best and worst case for the following snippet?
for (int index = 1; index < n; index *= 2) {
int counter = 0;
while (counter < n) {
counter++;
}
}
确定它在 Big-Theta 符号中作为 n 的函数的最佳和最坏情况运行时间。
我认为最坏的情况是n*log(n),但我不确定最好的情况。
时间复杂度确实是O(log),但是没有最好或最差的概念。
这种最好或最差的概念只有在给定的可能存在一些变化时才会起作用。例如,排序算法的时间复杂度以输入的大小表示,但是输入的排序方式仍然存在一些变化(是否已经排序?是否反向排序?...等)。
在这个问题中,只有作为输入,没有别的,所以时间复杂度就是这样——没有最好,也没有最差。
for (int index = 1; index < n; index *= 2) {
int counter = 0;
while (counter < n) {
counter++;
}
}
确定它在 Big-Theta 符号中作为 n 的函数的最佳和最坏情况运行时间。
我认为最坏的情况是n*log(n),但我不确定最好的情况。
时间复杂度确实是O(log),但是没有最好或最差的概念。
这种最好或最差的概念只有在给定的可能存在一些变化时才会起作用。例如,排序算法的时间复杂度以输入的大小表示,但是输入的排序方式仍然存在一些变化(是否已经排序?是否反向排序?...等)。
在这个问题中,只有作为输入,没有别的,所以时间复杂度就是这样——没有最好,也没有最差。