对于如何寻找此算法的Big-O
,我有些困惑。
到目前为止,我认为while
循环不会像数组的正常迭代那样是O(n),因为x
在每个for
循环之后都会加倍。 mergeSort是n log n
,我不知道如何处理for
循环的时间复杂度。我也不认为它是O(n)
,因为x
再加一遍。
void algorithm2 (int[] A, int n) {
int x = 1;
while (x < n) {
for (int i = 0; i + x < n; i += 2 * x ) {
mergeSort(A, i , i + x -1, i + 2 * x - 1);
}
x = x * 2;
}
}
任何帮助将不胜感激!