本章節(jié)主要內容:
一、了解為何算法分析的重要性
二返吻、用大“O”表示法來描述算法執(zhí)行時間
三姑子、了解在Python列表和字典類型中通用操作用大“O”表示法表示的執(zhí)行時間
四、了解Python數(shù)據(jù)類型的具體實現(xiàn)對算法分析的影響
五测僵、了解如何對簡單的Python程序進行執(zhí)行時間檢測
主要知識點如下:
1)算法分析主要就是從計算資源的消耗的角度來評判和比較算法街佑。我們想要分析兩種算法并且指出哪種更好,主要考慮的是哪一種可以更高效地利用計算資源捍靠°逯迹或者占用更少的資源。
2)一種簡單的計算程序時間復雜度的方式就是通過統(tǒng)計程序運行的時間來進行比較榨婆,在python中有一個time模塊磁携,通過調用time的time函數(shù)來獲取時間,在程序運行開始和結尾時分別調用這個函數(shù)就可以獲知程序的運行時間良风。
3)有時候對于同一個任務谊迄,采用不同的計算方法產生的結果相同但是時間消耗卻差別很大,舉個例子烟央,計算1+2+3+...n
方法一:
def sum1(n):
? ? sum = 0
? ? for i in range(n):
? ? ? ? sum += i
? ? return sum
方法二:
def sum2(n):
? ? sum = n*(n-1)/2
? ? return sum
在上邊兩個方法中隨著n的增大统诺,sum2運行時間沒有變大,而sum1的運行時間越來愈大疑俭。
在后面我們可以知道粮呢,sum1的運行時間為1+n,因此時間復雜度是O(n)
sum2的運行時間為1钞艇,因此其時間復雜度為O(1)
(4)Python中列表是一個很常用的數(shù)據(jù)結構鬼贱,在列表中有一個pop方法對列表進行pop元素操作,ls.pop(n)移除ls中第n個元素并返回移除的元素香璃,pop()默認移除最后一個元素这难,pop(0)移除第一個元素。
pop()的時間復雜度是O(1)
pop(0)的時間復雜度是O(n)
列表常用時間復雜度表對照
(5)Python中字典是一個很常用的數(shù)據(jù)結構葡秒。那么字典中的操作的時間復雜度是怎么樣的呢姻乓,由于字典是通過key來訪問元素,其訪問和賦值都是O(1)的時間復雜度眯牧。
字典常用操作復雜度