什么是算法
程序 = 數據結構 + 算法
算法(Algorithm)就是解決問題的步驟,就像做菜的食譜一樣,告訴計算機一步一步如何完成任務。
例如:
- 排序算法:把一堆數字從小到大排列
- 搜索算法:在一堆數據里快速的找到某個值
算法的特征:
- 有窮性:算法的有窮性是指算法必須能在執行有限個步驟之后終止
- 確切性:算法的每一步驟必須有確切的定義
- 輸入項:一個算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指算法本身定出了初始條件
- 輸出項:一個算法有一個或多個輸出,以反映對輸入數據加工后的結果。沒有輸出的算法是毫無意義的
- 可行性:算法中執行的任何計算步驟都是可以被分解為基本的可執行的操作步驟,即每個計算步驟都可以在有限時間內完成(也稱之為有效性)
算法的性能評價
一個算法的優劣往往通過算法復雜度來衡量,算法復雜度包括時間復雜度和空間復雜度兩個方面。其作用:時間復雜度是指執行算法所需要的計算工作量;而空間復雜度是指執行這個算法所需要的內存空間。
演示
可以在這個網站查看常用排序算法的直觀演示:
https://visualgo.net/en/sorting
算法的西天取經之路:
https://leetcode.cn/
https://www.nowcoder.com/