<span class="
line"
><span style="
--shiki-light:#383A42;--shiki-dark:#ABB2BF;"
>}
</span></span></code></pre><div class="
line-numbers"
aria-hidden="
true"
style="
counter-reset:line-number 0;"
><div class="
line-number"
></div><div class="
line-number"
></div><div class="
line-number"
></div><div class="
line-number"
></div><div class="
line-number"
></div><div class="
line-number"
></div><div class="
line-number"
></div><div class="
line-number"
></div></div></div><p>伪代码不是很严谨哈,大家理解这个意思就行了。
</p><p>说到底,数据结构不过是一种抽象后的封装。像 Java,它之所以流行的一个很重要的原因,就是它提供了多种多样的、方便开发者调用的数据结构,比如说对数组的封装 ArrayList、对链表的封装 LinkedList、对哈希表的封装 HashMap、ConcurrentHashMap 等等。C 语言就没有这些,想用的话,就得自己封装。但 Java 和 C 语言的基本数据类型是一致的,int、float 这些都是相通的。
</p><p>对于初学者来说,平常敲代码都是直接去调用数据结构的,是很少去想这些数据结构是怎么实现的。
</p><p>当一个初学者向高级程序员迈进的时候,就必须得静下心来,去搞清楚 ArrayList 和 LinkedList 的内部实现,搞清楚之后就会明白,之所以它们在增删改查的时候性能上有差异,就是因为它们的内部使用了不同的数据结构所导致的。
</p><p>有一说一,我在 2008 年刚学 Java 的那会,真的是不理解,为什么明明有了 ArrayList,Java 还要设计 LinkedList,不都是集合嘛!
</p><p>害!
</p><p><strong>数据结构为什么这么重要?
</strong></p><p>我直接放大招吧,甩一段清华大学计算机系教授邓俊辉老师话吧。
</p><blockquote><p>数据结构是计算机科学的关键内容,也是构建高效算法的必要基础。其中涉及的知识,在相关专业的课程系统中始终处于核心位置。以 ACM/IEEE Computing Curricula(计算机教学大纲)为例,其中对于几个相关专业(计算机科学、计算机工程、信息系统、信息技术、软件工程)的共同要求中,数据结构与算法作为程序设计概念与技能的核心,紧随在数学之后,排在第二位。
</p></blockquote><p>数据结构说复杂也不复杂,说简单也不简单,这不重要,重要的是必须得学!
</p><p>有小伙伴可能会问,“我数学学的不好,学数据结构能学会吗?”
</p><p>说句实在话,数据结构和数学之间没有必然的关系。
<strong>我上小学的时候,参加过洛阳市的奥林匹克数学竞赛,还得了三等奖
</strong>(偷偷地加个粗);初中的时候,数学成绩也一直保持得不错,但上了高中之后,由于贪玩,数学成绩一落千丈,成了瘸腿课。大学的时候对离散数学、微积分这些更是头大。
</p><p>但这并不妨碍我学习数据结构,真的。数据结构中,树算是最难的一块了,像数组、链表、栈、哈希表这些相对来说,计算机专业的,只要稍微下点功夫,都是能掌握的。
</p><p>说了这么多,
<strong>数据结构到底该怎么学呢?
</strong></p><p>如果你有 C/C++ 的底子,我给推荐两本书。
</p><p>第一本,《趣学数据结构》
</p><figure><img src="
https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/szjy/bzhan-10wan-bd02be2f-ae71-413f-b0c0-0050fee0e2b5.png"
alt=""
tabindex="
0"
loading="
lazy"
><figcaption></figcaption></figure><p>说到这,多说一嘴。2018 年的时候,人民邮电出版社的张老师邀请我出一本 Java 方面的书,我当时想命名为《趣学 Java》。张老师说,刚好之前和陈小玉老师合作出了一本《趣学算法》的书,要不发一本你看看吧。
</p><p>你别说,这本书还挺适合拿来作为算法的入门书呢。后来,陈小玉老师又出了一本新书,叫《趣学数据结构》,我看了,虽然离“趣”字有点距离,但很适合作为一门数据结构方面的入门书。
</p><p>第二本,《数据结构(C++语言版)》
</p><figure><img src="
https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/szjy/bzhan-10wan-de28bb8a-ddb6-4b73-b132-ebf5e507fdbe.png"
alt=""
tabindex="
0"
loading="
lazy"
><figcaption></figcaption></figure><p>对,清华大学邓俊辉教授编著的,豆瓣评分也蛮高的。这本书还配套了视频课程,是免费的,可以在学堂在线上看,我之前也有推荐过。
</p><figure><img src="
https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/szjy/bzhan-10wan-15de0615-3d9c-4bdc-bedb-4165ac6f4802.png"
alt=""
tabindex="
0"
loading="
lazy"
><figcaption></figcaption></figure><p>课程质量木得说,算是国家级精品课了。大家有时间的话,一定要刷一遍。
</p><blockquote><p>视频地址:https://www.xuetangx.com/course/THU08091000384/7755489
</p></blockquote><p>对了,还有浙江大学陈越姥姥的视频课:
</p><blockquote><p>视频地址:https://www.bilibili.com/video/BV1JW411i731
</p></blockquote><p>如果你有 Java 的底子,我也给推荐两本书。
</p><p>第一本,《数据结构与算法分析(Java 语言描述)》
</p><figure><img src="
https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/szjy/bzhan-10wan-1672e79d-a576-4a24-bc60-ced47b692a0f.png"
alt=""
tabindex="
0"
loading="
lazy"
><figcaption></figcaption></figure><p>虽然翻译得不怎么样,但内容很全面,适合拿来作为一本数据结构的入门书。
</p><p>第二本,《算法(第 4 版)》
</p><figure><img src="
https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/szjy/bzhan-10wan-9e260fc8-69fa-4dfa-82c6-9d6b1d7027e5.png"
alt=""
tabindex="
0"
loading="
lazy"
><figcaption></figcaption></figure><p>虽然名为算法,但大家都知道,算法是基于数据结构的,数组、队列、栈、堆、二叉树、哈希表等等,这些数据结构都讲到了。
</p><p>如果时间比较紧的话,C/C++ 程序员只看《数据结构(C++语言版)》就行了,Java 程序员只看《算法(第 4 版)》就行了。如果一遍没看懂的话,再看一遍就好了。
</p><p>有网友“三色院堇子的老公”说得好。
</p><blockquote><p>数据结构就是你已经写了几百万行,然后数据结构减到 90 万行,性能还翻倍,嗯,终于学会了!
</p></blockquote><h2 id="
四、走心总结"
tabindex="
-1"
><a class="
header-anchor"
href="
#四、走心总结"
><span>四、走心总结
</span></a></h2><p>2022 年 1 月份,很有必要开个好头。
</p><p>那么趁寒假刷一波清华在 GitHub 上的开源课程,还有 C语言和数据结构,寒假过后,绝壁是卷王中的卷王。
</p><p>悄悄地告诉大家一声,很多说放假了一定要打打游戏,一定要放松下,这些人都在悄悄地卷。
</p><p>所以说,如果你是正在放松的那个,可要小心了!
</p><p>不要一个寒假就被甩开了差距。
</p><p>工作党其实也一样,适当放松,时刻警惕,该学的时候还是要能支棱起来。
</p></div><!----><footer class="
vp-page-meta"
><div class="
vp-meta-item edit-link"
><a class="
auto-link external-link vp-meta-label"
href="
https://github.com/itwanger/toBeBetterJavaer/edit/master/docs/src/about-the-author/bzhan-10wan.md"
aria-label="
在 GitHub 上编辑此页"
rel="
noopener noreferrer"
target="
_blank"
><!--[--><svg xmlns="
http://www.w3.org/2000/svg"
class="
icon edit-icon"
viewBox="
0 0 1024 1024"
fill="
currentColor"
aria-label="
edit icon"
name="
edit"
><path d="
M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"
></path><path d="
M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"
></path></svg><!--]-->在 GitHub 上编辑此页
<!----></a></div><div class="
vp-meta-item git-info"
><div class="
update-time"
><span class="
vp-meta-label"
>上次编辑于:
</span><!----></div><div class="
contributors"
><span class="
vp-meta-label"
>贡献者:
</span><!--[--><!--[--><span class="
vp-meta-info"
title="
email: [email protected]"
>沉默王二
</span><!--]--><!--]--></div></div></footer><nav class="
vp-page-nav"
><!----><a class="
route-link auto-link next"
href="
/about-the-author/zhihu-1000wan.html"
aria-label="
我的第一个,一千万!知乎阅读"
><div class="
hint"
>下一页
<span class="
arrow end"
></span></div><div class="
link"
>我的第一个,一千万!知乎阅读
<!----></div></a></nav><div id="
vp-comment"
class="
giscus-wrapper input-top"
style="
display:block;"
><svg xmlns="
http://www.w3.org/2000/svg"
width="
32"
height="
32"
preserveAspectRatio="
xMidYMid"
viewBox="
0 0 100 100"
><circle cx="
28"
cy="
75"
r="
11"
fill="
currentColor"
><animate attributeName="
fill-opacity"
begin="
0s"
dur="
1s"
keyTimes="
0;0.2;1"
repeatCount="
indefinite"
values="
0;1;1"
></animate></circle><path fill="
none"
stroke="
#88baf0"
stroke-width="
10"
d="
M28 47a28 28 0 0 1 28 28"
><animate attributeName="
stroke-opacity"
begin="
0.1s"
dur="
1s"
keyTimes="
0;0.2;1"
repeatCount="
indefinite"
values="
0;1;1"
></animate></path><path fill="
none"
stroke="
#88baf0"
stroke-width="
10"
d="
M28 25a50 50 0 0 1 50 50"
><animate attributeName="
stroke-opacity"
begin="
0.2s"
dur="
1s"
keyTimes="
0;0.2;1"
repeatCount="
indefinite"
values="
0;1;1"
></animate></path></svg></div><!----><!--]--></main><!--]--><footer class="
vp-footer-wrapper"
><div class="
vp-footer"
><a href="
https://beian.miit.gov.cn/"
target="
_blank"
>豫ICP备2021038026号-4
</a><img src="
https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/beian.png"
height="
15px"
width="
15px"
/><a target="
_blank"
href="
http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=41030502000411"
><span>豫公网安备 41030502000411号
</span></a></div><div class="
vp-copyright"
>Copyright © 2024 沉默王二
</div></footer></div><!--]--><!--[--><!----><!----><!--]--><!--]--></div>
0 commit comments