看過市面上許多解釋演算法的資料,有些書搭配圖片,有些影片淺顯易懂,為了挑戰自己以及將演算法了解透測,開始了這次的鐵人賽。
開始的時候,想要推薦一本書給大家,是這本書引我進入演算法之門(笑)
**演算法圖鑑:26種演算法 + 7種資料結構,人工智慧、數據分析、邏輯思考的原理和應用全圖解
**
身為一個半路轉職的的工程師,發現在軟體的領域,徹底實現「活到老,學到老」的精神,以此為基礎,開始這30天的訓練吧!
演算法,可以簡單說也可以很複雜的講。簡單來說,是一個解決問題,並且用來達到目的方法,換句話說,輸入 + 演算法 = 輸出。而衡量此種方法是否為最有效方式,就可以利用時間或空間複雜度來測量。
此處的時間,指的不是程式執行時所計算的秒數,而是從程式執行的第一步到完成,中間的步數。換句話,就是輸入內容到輸出答案之間的時間。
在表示時間複雜度時,會使用Big O(念作order),下圖是幾種常見的表示方式
執行效率:
O(1) < O(log(n)) < O(n) < O(n*log(n)) < O(n^2) < O(n^3) < O(2^n) < O(n!)
#copy 時間複雜度為O(1),僅執行一次即可達成目的
x = ["Hello World"]
y = x.copy()
print(y)
Python官網也有貼心提供不同方法之間的時間複雜度,有興趣延伸閱讀的人可以參考一下。