2017-05-06 42 views
-2

我有一個數據列表。如何找到這個程序的時間複雜度?

db = [("Ada","works", "IBM") 
    ,("Alice","director", "Ada") 
    ,("Tom","works", "IBM") 
    ,("Tommy","director", "Tom") 
,("IBM","isat",  "CA") 
,("CA","in",  "USA") 
] 
ask db = map (\(x,y,z) -> (z == "IBM")) db 

如何計算爲O(n)的複雜性? 如果我想通過列表2,5,10.O的長度,得到的結果(n)是同樣喜歡2,5,10?如果我做

trans2 db = concat (map ((x,y,z) -> concat (map((x',y',z') -> if (z==x') then [] else [(x,y ++ "." ++ y',z')] else []) db)) db) 

我該如何計算O(n)?程序的運行時間?調整的複雜性

+0

* O(n)* ??的複雜性* O(n)*是一個複雜類。 –

+0

函數O(n)時間複雜度 – Ada

+0

這個比較是一個恆定的時間操作,由於你使用了map,所以'ask'函數運行於O(n)(又稱線性時間) 。 – Erik

回答

1

這個問題還不清楚,我預計它很快就會關閉。簡單地說。

O(n)的複雜性。如果你知道O(n)並且你想要複雜性,那麼你就完成了。

由於長度是n所代表的長度,列表的長度(2,5,10,你有什麼)並不是複雜度的一個因素。

沒有代碼可以自動計算算法的複雜度。這是一個手動分析。

+0

這意味着如果db中有5個子列表,複雜度是5?但是,如果我將其他操作(如列表反轉)與其他操作結合使用,那麼如何計算複雜度?TKS。 – Ada

+0

不,因爲'5'不是複雜等級。你一直試圖減少對單個數字的答案,這本身就是一個誤解。 –

+0

這意味着時間複雜度取決於列表的長度。 – Ada