演算法 時間複雜度big O

2022-08-26 13:30:20 字數 437 閱讀 6450

①現在已知乙個陣列a,裡面有5個值,a=[1,2,3,4,5]

假如:取a[2]需要1秒

那麼:隨著a的擴大,比如a有10萬個元素,a=[1,2,3,...100000],取a[10000]也需要差不多1秒(因為取陣列的值只是計算乙個偏移量就可以取到了)

對於取這個陣列某個位置的值,不取決於這個陣列的大小,所執行的時間都是1秒

對於「取這個陣列某個位置的值」這個操作來說,時間複雜度是乙個常數

所以,時間複雜度為o(1)

②已知乙個鍊錶a,有10個數

假如:取最後乙個值需要1秒

那麼:理論上,如果鍊錶a有100個數,那麼取最後乙個值需要10秒(因為鍊錶需要從第乙個值開始一直往下取值)

對於取這個鍊錶上最後乙個位置的值,取決於這個鍊錶的規模,當鍊表擴大(擴大到n),所需要的時間也在增加,

所以,時間複雜度為o(n)

演算法時間複雜度空間複雜度

演算法 是解決某一類問題的通法,即一系列清晰無歧義的計算指令。每個演算法只能解決具有特定特徵的一類問題,但乙個問題可由多個演算法解決。乙個演算法應該有以下五個方面的特性 比較演算法的優劣我們從兩個維度去進行考量 時間 空間 時間複雜度,空間複雜度 找出基本語句 演算法中執行次數最多的那條語句就是基本...

演算法 時間複雜度 空間複雜度

1 if i 1 2 a 1 result 3 4 result n 2 result 1000 1000 3 array.push a array.pop 4 map.set 1,1 map.get 1,1 在計算複雜度的時候,o 1 一般會被忽略。1 for let i 0 i n i 2 wh...

演算法複雜度 時間複雜度和空間複雜度

1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數...