【发布时间】:2021-08-04 01:52:41
【问题描述】:
据我了解,时间复杂度是通过计算随着输入大小的增加而增加的操作数得出的。
在归并排序中,有 2 个阶段。
- 将输入数组分成更小的数组
- 对这些数组进行排序和合并
根据视频讲座,为合并排序划分数组的时间复杂度为O(log n)。
但这里他指的不是计算时间复杂度的操作次数,而是解压次数或调用递归函数的次数。
*他使用递归来划分数组。
纯粹就伪代码而言,在这种情况下,递归所占用的操作不止n;
相反,此代码始终采用n 操作;
function divide(arr){
for (let i = 0; i < arr.length; i++) {
arr[i] = [arr[i]];
}
}
那么递归代码的复杂度如何小于循环呢?
【问题讨论】: