概念:什么是數(shù)據(jù)結(jié)構(gòu),什么是算法
數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)元素之間的關(guān)系
算法:算法就是解決特定問題求解步驟的描述,在計算機(jī)中表現(xiàn)為指令的有限序列列,并且每個指令表示?一個或多個操作
數(shù)據(jù)結(jié)構(gòu)是為算法服務(wù)的庆猫,算法要作用在特定的數(shù)據(jù)結(jié)構(gòu)之上。因此啡专,我們無法孤立數(shù)據(jù)結(jié)構(gòu)來講算法磕潮,也無法孤立算法來講數(shù)據(jù)結(jié)構(gòu)疙教。
有了大致的定義后梳杏,我們再來細(xì)說數(shù)據(jù)結(jié)構(gòu)和算法
數(shù)據(jù)結(jié)構(gòu)
<table border="1" >
<tr>
<td colspan="8" align="center">數(shù)據(jù)結(jié)構(gòu)</td>
</tr>
<tr>
<td colspan="6" align="center">邏輯結(jié)構(gòu)</td>
<td colspan="2" align="center">存儲結(jié)構(gòu)</td>
</tr>
<tr>
<td colspan="3" align="center">線性結(jié)構(gòu)</td>
<td colspan="3" align="center">非線性結(jié)構(gòu)</td>
<td rowspan="2" align="center" valign="middle">順序存儲結(jié)構(gòu)</td>
<td rowspan="2" align="center" valign="middle">鏈?zhǔn)酱鎯Y(jié)構(gòu)</td>
</tr>
<tr>
<td>線性表</td>
<td>棧和隊列</td>
<td>字符串</td>
<td>集合結(jié)構(gòu)</td>
<td>樹結(jié)構(gòu)</td>
<td>圖結(jié)構(gòu)</td>
</tr>
</table>
幾種常見的邏輯結(jié)構(gòu)
對于?空的線性表和線性結(jié)構(gòu),其特點如下:
- 存在唯一的?個被稱作”最后一個"的數(shù)據(jù)元素
- 除了了第一個之外韧拒,結(jié)構(gòu)中的每個數(shù)據(jù)元素均有一個前驅(qū)
- 除了了最后?個之外,結(jié)構(gòu)中的每個數(shù)據(jù)元素都有一個后繼
算法
特性:
- 輸入輸出 (有0個或者一個輸入 至少有一個輸出)
- 有窮性 (算法需要在有限的 執(zhí)行次數(shù) 和執(zhí)行時間下獲得結(jié)果)
- 確定性 (算法中每一條指令必須有確切的含義十性,不會產(chǎn)生二義性叛溢。即對于相同的輸入只能得出相同的輸出)
- 可行性 (一個算法是可行的,即算法中描述的操作都是吋以逋過已經(jīng)實現(xiàn)的基本運(yùn)算執(zhí)行有限次來實現(xiàn)的劲适。)
設(shè)計要求:
- 正確性 (算法應(yīng)當(dāng)能夠正確地解決求解問題)
- 可讀性 (算法應(yīng)當(dāng)具有良好的可讀性楷掉,以助于人們理解)
- 健壯性 (當(dāng)輸入非法數(shù)據(jù)時,算法也能適當(dāng)?shù)刈龀龇磻?yīng)或進(jìn)行處理霞势,而不會產(chǎn)生莫名其妙的輸出結(jié)果)
- 時間效率高烹植、儲存量低 (效率是指算法執(zhí)行的時間,存儲量需求是指算法執(zhí)行過程中所需要的最大存儲空間支示,這兩者都與問題的規(guī)模有關(guān))
執(zhí)行效率:
時間復(fù)雜度 用大O表示法O(n)
-
空間復(fù)雜度 記做: S(n) = n(f(n)),其中,n為問題的規(guī)模,f(n)為語句句關(guān)于n所占存儲空間的函數(shù)
時間復(fù)雜度和空間復(fù)雜度不涉及到具體的時間和空間執(zhí)行效率刊橘,O(n)表示的是一種隨著數(shù)據(jù)的增長鄙才,復(fù)雜度的增長趨勢
幾種常見的復(fù)雜度 排序從低到高
術(shù)語 | 表示 |
---|---|
常數(shù)階 | O(1) |
對數(shù)階 | O(log n) |
線性階 | O(n) |
線性對樹階 | O(nlogn) |
平方階 | O(n2) |
立方階 | O(n3) |
指數(shù)階 | O(2?) |
階乘階 | O(n!) |
n次方階 | O(n?) |
畫個圖感受下: