時間複雜度分為以下幾個級別
/**
* 時間複雜度o(1)
* 無論多少次。只要跟輸入次數n沒關係,就是o(1)的時間複雜度。可以說是o(2),o(3).最終都是o(1)的複雜度
*/function calculate(n)
for(var i = 0 ; i < n ;i++)
for(var i = 1; i < n ; i = i*2)
for(var i = 1; i < n ; i++)
}
/**
* 歸併排序
*/public class mergesort
int mid = (left + right) / 2;
mergesort(array, left, mid);
mergesort(array, mid + 1, right);
merge(array, left, mid, right);
}private void merge(int array, int left, int mid, int right) else
}if (leftpos > mid)
} else
}for (int i = 0; i < temp.length; i++)
}@test
public void test() ;
system.out.println(arrays.tostring(array1));
mergesort(array1, 0, array1.length - 1);
system.out.println(arrays.tostring(array1));
int array2 = ;
system.out.println(arrays.tostring(array2));
mergesort(array2, 0, array2.length - 1);
system.out.println(arrays.tostring(array2));
}}
function fib(n)
return fib(n-1)+fib(n-2);
}
long long factorial(unsigned n) {
if (n==1)
return 1;
long long sum = 0;
for (unsigned i=0; i空間複雜度
正常的申請乙個變數空間。無論申請多少個,都是o(1)
申請了乙個長度為n的一維陣列,那他的空間複雜度就是n。
申請了乙個長度為n*n長度的陣列,那他的空間複雜度就是n^2
時間複雜度和空間複雜度計算
時間複雜度 首先要說的是,時間複雜度的計算並不是計算程式具體執行的時間,而是演算法執行語句的次數。當我們面前有多個演算法時,我們可以通過計算時間複雜度,判斷出哪乙個演算法在具體執行時花費時間最多和最少。常見的時間複雜度有 常數階o 1 對數階o log2 n 線性階o n 線性對數階o n log2...
時間複雜度和空間複雜度的計算
時間複雜度 1.一般情況下,演算法的基本操作重複執行的次數是模組n的某乙個函式f n 因此,演算法的時間複雜度記做 t n o f n 分析 隨著模組n的增大,演算法執行的時間的增長率和 f n 的增長率成正比,所以 f n 越小,演算法的時間複雜度越低,演算法的效率越高。2.在計算時間複雜度的時候...
時間複雜度和空間複雜度的計算
時間複雜度 執行乙個演算法,執行的次數和問題規模之間的函式關係,用o 表示。o 1 常數項,和問題的規模無關。時間複雜度計算規則 1.只保留最高端項 2.不要係數 空間複雜度 執行乙個演算法,需要額外的輔助空間和問題規模之間的函式關係,用o 表示。簡單來說,時間複雜度指的是執行次數,空間複雜度指的是...