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
@@ -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>
@@ -3490,6 +3529,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>
@@ -3534,6 +3590,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 -->