資料內(nèi)容:
1、算法:解決問題的方法。
我們可以把所有的算法想象為一本“菜譜”,特定的算法比如菜譜中的的一道菜的制作流
程,只要按照菜譜的要求制作,那么誰都可以做出一道好吃的菜。so,這個做菜的步驟就可
以理解為:“解決問題的步驟”
例如排序的算法,有插入排序、希爾排序、選擇排序、冒泡排序、堆排序、快速排序(六
大排序算法:插入排序、希爾排序、選擇排序、冒泡排序、堆排序、快速排序-CSDN博
客)
這么多算法,那怎么衡量他們的好壞呢?
比如衡量一臺電腦的好壞,可以CPU,價格,內(nèi)存等
算法可以用時間復雜度,和空間復雜度來衡量。
時間復雜度主要衡量一個算法的運行快慢,而空間復雜度主要衡量一個算法運行所需要的額
外空間。
2.什么是時間復雜度
public class Main {
? ?public static void main(String[] args) {
? ? ? ?//下面這句代碼會運行多長時間
? ? ? ?int i = 0;
? ? ? ?
? ? ? ?//那下面這句呢?
? ? ? ?int a = 1,b = 2,c = 3...z = 26;
? ? ? ?
? ? ? ?
? ? ? ?for(int i = 0; i < n ;i++){
? ? ? ? ? ?System.out.println("Hello world!");//那這句呢?
? ? ? }
? ? ? ?
? ? ? ?//電腦運行每一句代碼的時候都要要花費時間,我們可以把每一條語句
的執(zhí)行時間都看做是一樣的,記為一個時間單元。
? ? ? ?
? ? ? ?//所以上面的前兩句代碼各花費了兩個時間單元,第三句花費了n個時 間
單元
? ? ? ?
? ? ? ?//用T(n)表示程序運行了多長時間,那么上面的代碼運行時間為
? ? ? ?T(n) = 2 + n
? ? ? ?//其中的n被我們稱為問題的規(guī)模,其實就是處理問題的大小
? ? ? ?
? ? ? ?//一般只關心隨著問題規(guī)模n趨于無限大時對結(jié)果影響最大的項
? ? ? ?//所以上面的T(n)可以簡化為T(n) ~ n
? ? ? ? ? ?簡化后的式子就是這個算法的時間復雜度
? ? ? ? ? ?記為O(f(n))為時間復雜度
? ? ? ? ? ?
? ? ? ? ? ?//所以上面的算法的時間復雜度為O(n)
? }
}