1. 程式人生 > >資料結構與演算法之基礎知識

資料結構與演算法之基礎知識

>微信搜一搜「bigsai」一直分享乾貨 文章已收錄在 [我的Github bigsai-algorithm](https://github.com/javasmall/bigsai-algorithm) ## 前言 資料結構與演算法是程式設計師內功體現的重要標準之一,且資料結構也應用在各個方面,業界更有**程式=資料結構+演算法**這個等式存在。各個中介軟體開發者,架構師他們都在努力的優化中介軟體、專案結構以及演算法提高執行效率和降低記憶體佔用,在這裡資料結構起到相當重要的作用。此外資料結構也蘊含一些面向物件的思想,故學好掌握資料結構對邏輯思維處理抽象能力有很大提升。 為什麼學習資料結構與演算法?如果你還是學生,那麼這門課程是必修的,考研基本也是必考科目。工作在內卷嚴重的大廠中找工作資料結構與演算法也是面試、筆試必備的非常重要的考察點。如果工作了資料結構和演算法也是內功提升一個非常重要的體現,對於程式設計師來說,想要得到滿意的結果,資料結構與演算法是必備功力! ## 資料結構 ![image-20201108002732048](https://bigsai.oss-cn-shanghai.aliyuncs.com/img/image-20201108002732048.png) ### 概念 資料結構是計算機儲存、組織資料的方式。資料結構是指相互之間存在一種或多種特定關係的資料元素的集合。通常情況下,精心選擇的資料結構可以帶來更高的執行或者儲存效率。 簡言之,資料結構是一系列的儲存結構按照一定`執行規則`、配合`一定執行演算法`所形成的高效的儲存結構。在我們所熟知的關係資料庫、非關係資料庫、搜尋引擎儲存、訊息佇列等都是比較牛的大型資料結構良好的運用。當然這些應用中介軟體不單單要考慮單純的結構問題。還考慮實際os、網路等其他因素。 而對於資料結構與演算法這個專欄。我們程式設計師更改掌握的首先是在`記憶體`中執行的`抽象的資料結構`。是一個相對比較單一的資料結構型別,比如`線性結構`、`樹`、`圖`等等. ### 相關術語 在資料結構與演算法中,**資料、資料物件、資料元素、資料項**很多人搞不清其中的關係。通過畫一張圖來捋一捋,然後下面舉個例子給大家分享一下。 ![image-20201230101757854](https://bigsai.oss-cn-shanghai.aliyuncs.com/img/image-20201230101757854.png) `使用者資訊表users` | id | name | sex | | ---- | -------- | ----- | | 001 | bigsai | man | | 002 | smallsai | man | | 003 | 菜虛鯤 | woman | users的pojo物件 ```java class users { //略 int id; String name; String sex; } //list和woman是數