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