① 嚴蔚敏老師的《數據結構》里,關於時間復雜度的寫法,譬如logn,這個對數函數的底數是多少啊
演算法中log級別的時間復雜度都是由於使用了分治思想,這個底數直接由分治的復雜度決定。如果採用二分法,那麼就會以2為底數,三分法就會以3為底數,其他亦然。不過無論底數是什麼,log級別的漸進意義是一樣的。也就是說該演算法的時間復雜度的增長與處理數據多少的增長的關系是一樣的。
(1)演算法分析里log沒有底數嗎擴展閱讀:
時間復雜度的計算方法
(1)一般情況下,演算法中基本操作重復執行的次數是問題規模n的某個函數,用T(n)表示,若有某個輔助函數f(n),使得T(n)/f(n)的極限值(當n趨近於無窮大時)為不等於零的常數,則稱f(n)是T(n)的同數量級函數。
記作T(n)=O(f(n)),稱O(f(n))
為演算法的漸進時間復雜度,簡稱時間復雜度。
(2)在計算時間復雜度的時候,先找出演算法的基本操作,然後根據相應的各語句確定它的執行次數,再找出 T(n) 的同數量級。
(3)在pascal中比較容易理解,容易計算的方法是:看看有幾重for循環,只有一重則時間復雜度為O(n),二重則為O(n^2),依此類推,如果有二分則為O(logn),二分例如快速冪、二分查找,如果一個for循環套一個二分,那麼時間復雜度則為O(nlogn)。