如何在平均情况下以插入所需的时间复杂度的升序排列以下数据结构。 1.排序数组 2.哈希表 3.二叉搜索树 4. B +树
答案 0 :(得分:3)
在这个答案中,我将为每个数据结构提供一个启动器,让你自己完成剩下的工作。
k
的排序数组中,每个都有问题
插入是你首先需要找到索引i
所在的位置
应该插入元素(简单),然后移动所有元素
i,i + 1,...,k向右,以便'#34;定位"对于新的
元件。这需要O(k)
时间,实际上k/2
平均移动1/2 + 2/2 + 3/3 + ... + n/2 = (1+...+n)/2
。
O(1)
。
n
插入元素的平均摊销案例性能。执行O(1)
次操作时会发生什么?O(h)
?总的复杂性是什么?h
,其中Some_Const*(log(1) + log(2) + ...+ log(n))
是树的当前高度。幸运的是,随机添加元素到二叉搜索树(甚至非自平衡)its average height is still O(logn)
。
O(h)
h
次。区别在于,即使在最坏的情况下,Some_Other_Const*(log(1) + log(2) + .. + log(n))
也是对数的。因此,在计算平均情况时,时间复杂度的计算将保持log(x) + log(y) = log(x*y)
。提示:
log(n!)
O(nlogn)
位于{{1}}