1. 程式人生 > >數據結構與算法(1)- 數據結構概覽

數據結構與算法(1)- 數據結構概覽

但是 比較 以及 net 差異 nbsp 特性 會有 算法

聲明:雖然本系列博客與具體的編程語言無關。但是本文作者對c++相對比較熟悉,其次是java,所以難免會有視角上的偏差。舉例也大多是和這兩門語言相關。

今天先來看看有哪些常見的數據結構(C++ STL視角,其他應該也大同小異吧。哈哈,我猜的!)。所以之後的內容大多從STL出發,然後順便對比下java中對應的數據結構。作為一名合格的軟件開發人員,我們有時不需要深入對這些結構進行深度了解(原子級了解),但是至少我們得知道這些結構的基本原理、構成以及代價(時間空間代價)。如果你想對這些結構深度了解,建議閱讀《STL源碼剖析》這本書,java的話可以直接讀相關的源碼就行了。這個系列博客只會分析這些結構的基本原理、代價以及應用時註意的細節,而不會用代碼實現。那麽廢話不多說,先來個表:

技術分享圖片


C++ STL裏將上表出現的這些重要的數據結構稱為容器。容器也就是裝東西之物,數據結構乃是裝數據之物。這麽理解數據結構其實很簡單。說白了數據結構就是構造了一塊空間,然後制定了/構造了一些規則來更方便的管理和操作這些數據。那麽根據“數據在容器中的排列”特性,這些數據結構可以分為序列式(sequence)和關聯式(associative)兩種。

所謂序列式容器,其中的元素都可序(ordered),但未必有序(sorted)。 --侯捷

所謂關聯式容器,觀念上類似關聯式數據庫(實際上則簡單許多):每筆數據(每個元素)都有一個鍵值(key)和一個實值(value)。 --侯捷

所以這下子我們就清楚啦,表1左側的數據都是可序的,右側的數據數據都是由鍵值對構成的。那麽他們到底有啥區別呢,又有什麽性能上的差異呢,空間占用又是啥情況呢?這些問題就隨著我們的博客一步一步來揭開咯。

小秘密:下一篇將講解序列容器中的vector。另外可以透漏個小秘密,根據數據組織的不同序列式容器大致可以分為三種哦!一是基於數組的,一是基於列表,再是基於樹結構的喲。

See you next time. Happy Coding!!!

我的GitHub???????
---------------------
作者:dnhua
來源:CSDN
原文:https://blog.csdn.net/dnhua/article/details/84658982
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

數據結構與算法(1)- 數據結構概覽