This commit is contained in:
krahets
2024-01-25 21:09:05 +08:00
parent 9bc021e98c
commit 545e15bc81
8 changed files with 38 additions and 22 deletions

View File

@ -17,6 +17,14 @@ icon: material/calculator-variant-outline
她邀请你共舞,请紧跟她的步伐,踏入充满逻辑与美感的算法世界。
计算机的出现给世界带来了巨大变革,它凭借高速的计算能力和出色的可编程性,成为了执行算法与处理数据的理想媒介。无论是电子游戏的逼真画面、自动驾驶的智能决策,还是 AlphaGo 的精彩棋局、ChatGPT 的自然交互,这些应用都是算法在计算机上的精妙演绎。
事实上,在计算机问世之前,算法和数据结构就已经存在于世界的各个角落。早期的算法相对简单,例如古代的计数方法和工具制作步骤等。随着文明的进步,算法逐渐变得更加精细和复杂。从巧夺天工的匠人技艺、到解放生产力的工业产品、再到宇宙运行的科学规律,几乎每一件平凡或令人惊叹的事物背后,都隐藏着精妙的算法思想。
同样,数据结构无处不在:大到社会网络,小到地铁线路,许多系统都可以建模为“图”;大到一个国家,小到一个家庭,社会的主要组织形式呈现出“树”的特征;冬天的衣服就像“栈”,最先穿上的最后才能脱下;羽毛球筒则如同“队列”,一端放入、另一端取出;字典就像一个“哈希表”,能够快速查找目标词条。
那么,什么是算法,它在我们日常生活中扮演着怎样的角色?接下来,我们将就这些问题展开探讨。
## 本章内容
- [1.1   算法无处不在](https://www.hello-algo.com/chapter_introduction/algorithms_are_everywhere/)

View File

@ -17,6 +17,14 @@ icon: material/book-open-outline
愿这本书在你的脑海中轻轻响起,留下独特而深刻的旋律。
两年前,我在力扣上分享了“剑指 Offer”系列题解受到了许多读者的鼓励和支持。在与读者交流期间我最常被问的一个问题是“如何入门算法”。逐渐地我对这个问题产生了浓厚的兴趣。
两眼一抹黑地刷题似乎是最受欢迎的方法,简单、直接且有效。然而刷题就如同玩“扫雷”游戏,自学能力强的人能够顺利将地雷逐个排掉,而基础不足的人很可能被得的满头是包,并在挫折中步步退缩。通读教材也是一种常见做法,但对于面向求职的人来说,毕业论文、投递简历、准备笔试和面试已经消耗了大部分精力,啃厚重的书往往变成了一项艰巨的挑战。
如果你也面临类似的困扰,那么很幸运这本书“找”到了你。本书是我对这个问题给出的答案,即使不是最优解,也至少是一次积极的尝试。本书虽然不足以让你直接拿到 Offer但会引导你探索数据结构与算法的“知识地图”带你了解不同“地雷”的形状、大小和分布位置让你掌握各种“排雷方法”。有了这些本领相信你可以更加自如地刷题和阅读文献逐步构建起完整的知识体系。
我深深赞同费曼教授所言“Knowledge isnt free. You have to pay attention.”从这个意义上看,这本书并非完全“免费”。为了不辜负你为本书所付出的宝贵“注意力”,我会竭尽所能,投入最大的“注意力”来完成本书的创作。
## 本章内容
- [0.1   关于本书](https://www.hello-algo.com/chapter_preface/about_the_book/)

View File

@ -265,7 +265,7 @@ comments: true
插入排序的时间复杂度为 $O(n^2)$ ,而我们即将学习的快速排序的时间复杂度为 $O(n \log n)$ 。尽管插入排序的时间复杂度更高,**但在数据量较小的情况下,插入排序通常更快**。
这个结论与线性查找和二分查找的适用情况的结论类似。快速排序这类 $O(n \log n)$ 的算法属于基于分治策略的排序算法,往往包含更多单元计算操作。而在数据量较小时,$n^2$ 和 $n \log n$ 的数值比较接近,复杂度不占主导地位每轮中的单元操作数量起到决定性作用。
这个结论与线性查找和二分查找的适用情况的结论类似。快速排序这类 $O(n \log n)$ 的算法属于基于分治策略的排序算法,往往包含更多单元计算操作。而在数据量较小时,$n^2$ 和 $n \log n$ 的数值比较接近,复杂度不占主导地位每轮中的单元操作数量起到决定性作用。
实际上,许多编程语言(例如 Java的内置排序函数采用了插入排序大致思路为对于长数组采用基于分治策略的排序算法例如快速排序对于短数组直接使用插入排序。

View File

@ -577,8 +577,8 @@ comments: true
if (fNext != nullptr) {
fNext->prev = nullptr;
front->next = nullptr;
delete front;
}
delete front;
front = fNext; // 更新头节点
// 队尾出队操作
} else {
@ -588,8 +588,8 @@ comments: true
if (rPrev != nullptr) {
rPrev->next = nullptr;
rear->prev = nullptr;
delete rear;
}
delete rear;
rear = rPrev; // 更新尾节点
}
queSize--; // 更新队列长度

View File

@ -250,7 +250,7 @@ hide:
<h3 style="margin-left: 0.5em;">互助学习</h3>
</div>
<p style="margin: 0;">欢迎讨论与提问,读者间携手共进</p>
<p class="intro-quote">"Knowledge increases by sharing."</br>知识在分享中得以增长”</p>
<p class="intro-quote">"Learning by teaching."</br>教学相长”</p>
</div>
</div>
<img class="intro-image" src="index.assets/comment.gif">