This commit is contained in:
krahets
2024-04-28 22:36:06 +08:00
parent 7803a73a99
commit b1bd0c8f8d
43 changed files with 990 additions and 430 deletions

View File

@@ -636,6 +636,17 @@
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
1.3 &nbsp; 小结
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
@@ -646,6 +657,34 @@
</a>
<nav class="md-nav md-nav--secondary" aria-label="目录">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
目录
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#1-q-a" class="md-nav__link">
<span class="md-ellipsis">
1. &nbsp; Q &amp; A
</span>
</a>
</li>
</ul>
</nav>
</li>
@@ -3555,6 +3594,23 @@
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
目录
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#1-q-a" class="md-nav__link">
<span class="md-ellipsis">
1. &nbsp; Q &amp; A
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
@@ -3599,6 +3655,15 @@
<li>数据结构与算法紧密相连。数据结构是算法的基石,而算法是数据结构发挥作用的舞台。</li>
<li>我们可以将数据结构与算法类比为拼装积木,积木代表数据,积木的形状和连接方式等代表数据结构,拼装积木的步骤则对应算法。</li>
</ul>
<h3 id="1-q-a">1. &nbsp; Q &amp; A<a class="headerlink" href="#1-q-a" title="Permanent link">&para;</a></h3>
<p><strong>Q</strong>:作为一名程序员,我在日常工作中从未用算法解决过问题,常用算法都被编程语言封装好了,直接用就可以了;这是否意味着我们工作中的问题还没有到达需要算法的程度?</p>
<p>如果把具体的工作技能比作是武功的“招式”的话,那么基础科目应该更像是“内功”。</p>
<p>我认为学算法(以及其他基础科目)的意义不是在于在工作中从零实现它,而是基于学到的知识,在解决问题时能够作出专业的反应和判断,从而提升工作的整体质量。举一个简单例子,每种编程语言都内置了排序函数:</p>
<ul>
<li>如果我们没有学过数据结构与算法,那么给定任何数据,我们可能都塞给这个排序函数去做了。运行顺畅、性能不错,看上去并没有什么问题。</li>
<li>但如果学过算法,我们就会知道内置排序函数的时间复杂度是 <span class="arithmatex">\(O(n \log n)\)</span> ;而如果给定的数据是固定位数的整数(例如学号),那么我们就可以用效率更高的“基数排序”来做,将时间复杂度降为 <span class="arithmatex">\(O(nk)\)</span> ,其中 <span class="arithmatex">\(k\)</span> 为位数。当数据体量很大时,节省出来的运行时间就能创造较大价值(成本降低、体验变好等)。</li>
</ul>
<p>在工程领域中,大量问题是难以达到最优解的,许多问题只是被“差不多”地解决了。问题的难易程度一方面取决于问题本身的性质,另一方面也取决于观测问题的人的知识储备。人的知识越完备、经验越多,分析问题就会越深入,问题就能被解决得更优雅。</p>
<!-- Source file information -->