數(shù)據(jù)結(jié)構(gòu)與算法是信息技術(shù)的核心基礎(chǔ)。掌握好這些基本知識,才能更好的使用信息技術(shù),進(jìn)而能設(shè)計好的軟件。學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法可從如下思維導(dǎo)圖開始:
數(shù)據(jù)結(jié)構(gòu)與算法概述
- 邏輯結(jié)構(gòu):數(shù)據(jù)的基本組成,一般可分為線性還是非線性。線性有明確的開頭和結(jié)構(gòu),其元素有清晰的前后順序關(guān)系。
- 存儲結(jié)構(gòu):結(jié)合實(shí)際存放數(shù)據(jù)的計算機(jī)存儲空間來看。可以分為順序、鏈?zhǔn)健⑸⒘小⑺饕冉Y(jié)構(gòu)。
- 基本運(yùn)算:要了解數(shù)據(jù)解耦的創(chuàng)建、清楚、元素CRUD,統(tǒng)計和復(fù)雜度評估
- 算法詳細(xì):要特別掌握的兩類算法就是遞歸與排序。遞歸的應(yīng)用可簡化程序設(shè)計,排序則是數(shù)據(jù)結(jié)構(gòu)中不可缺少的組成部分。
數(shù)據(jù)結(jié)構(gòu)
常見的數(shù)據(jù)結(jié)構(gòu)有如下這些,在日常開發(fā)中常用。通常能夠找到第三方庫,學(xué)習(xí)時可自己動手寫一個,然后與熱門的流行第三方庫對比,能有更好收獲。如下分別介紹:
- 棧
- 隊(duì)列
- 鏈表
鏈表
單向鏈表
雙向鏈表
單向循環(huán)鏈表
雙向循環(huán)鏈表
- 數(shù)組
- 樹
- 堆
- 散列表
- 紅黑樹
- 圖
排序算法
數(shù)據(jù)結(jié)構(gòu)要支持快速元素的查找、修改、增加與刪除,都需要排序。排序是最重要的算法。排序的目的是將無序變成有序。算法有很多,如下面介紹
排序
- 冒泡
冒泡排序
- 選擇
選擇排序
- 插入
插入排序
- 希爾
- 歸并
步驟一:拆分
步驟二:分別排序
步驟三:合并
- 快速
- 堆
初始化
第二步:轉(zhuǎn)換為最大堆:葉子節(jié)點(diǎn)小于根節(jié)點(diǎn)
第三步:構(gòu)建Max Heap
將根節(jié)點(diǎn)放到最后,并剔除,再進(jìn)行第二步
- 計數(shù)
- 桶
- 基數(shù)