0
如何在平均情況下按照插入所需的時間複雜度從小到大的順序排列以下數據結構。 1.數組排序 2.哈希表 3.二叉搜索樹 4. B +樹數據結構算法
如何在平均情況下按照插入所需的時間複雜度從小到大的順序排列以下數據結構。 1.數組排序 2.哈希表 3.二叉搜索樹 4. B +樹數據結構算法
在這個答案,我會給你在每個數據結構的起動器,讓你完成你自己的休息。
k
的排序後的數組,其中每個 插入問題是你是首先需要找到其中 元件應該被插入(簡單)的索引i
,然後轉移所有元素 i,i + 1,...,k向右移動以便爲新的 元素「創造位置」。這需要O(k)
時間,實際上它的平均移動量爲k/2
。 1/2 + 2/2 + 3/3 + ... + n/2 = (1+...+n)/2
。 O(1)
插入元素的平均攤銷案例性能。當你做n
操作時,會發生什麼,每個O(1)
?什麼將是共同的coplexity?O(h)
,其中h
是樹的當前高度。幸運的是,當將元素隨機添加到二叉搜索樹(甚至非自平衡)its average height is still O(logn)
時。 Some_Const*(log(1) + log(2) + ...+ log(n))
O(h)
時間。不同的是,即使在最壞的情況下,h
也是有界對數的。因此,計算平均情況時,計算時間複雜度將保持爲Some_Other_Const*(log(1) + log(2) + .. + log(n))
。提示:
log(x) + log(y) = log(x*y)
log(n!)
是O(nlogn)
應該是很好的鍛鍊,你......做自己...... – HadeS
抱歉,其實我在有一個問題面試 – user3649158
這個網站不是用於家庭作業或面試的問題。請看[tour](http://stackoverflow.com/tour)和[如何提問](http://stackoverflow.com/help/how-to-ask)。 – moffeltje