每个程序员都应该掌握的算法有哪些?我的第一本算法书

都知道程序员工资高,其实会算法的程序员工资更高。

我本科专业是计算机,大一大二的时候还搞过ACM竞赛。虽然本科时期的我经常逃课,文化课也没有很认真学,但是我的算法功底还是很不错的。因为算法功底好,所以我其他专业课即使并没有很认真学,成绩也没有很差,哈哈哈。当然其他文化课就不忍直视了。


15年还稚嫩的我,参赛留影

一起搞ACM竞赛的小伙伴们不是去了阿里就是去腾讯,要么就是字节跳动,毕业两年就杭州买房娶老婆生孩子,卧槽厉害了。


算法是解决问题的计算步骤,用于编写程序之前。


使用不同的算法解决同一个问题时,就算得到的结果是一样的,算法之间的性质也有很大的差异。比如,某个算法的运行时间很短,但需要占用大量内存;而另一个算法运行时间较长,但内存资源占用较少。学习各种算法可以使我们在编程时有更多的选择。成为优秀程序员的必要条件之一,就是可以根据应用场景选择最合适的算法。


这里推荐一本书《我的第一本算法书》。

这本书用了481张步骤图详细解释了的26个算法和7个数据结构的基本原理,全彩印刷。

囊括了程序员必会的数据结构、排序算法、查找、搜索、安全算法等等,通俗易懂,非常适合新手入门。


数据结构


图的搜索

来看一个具体的算法示例吧。

这是一个以随意排列的整数为输入,把它们按从小到大的顺序重新排列的问题。


考虑先从输入的数字中找出最小的数字,再将它和最左边的数字交换。

在这个示例中就是找到最小数字1,然后将它和最左边的 7 交换位置。


这之后1的位置便固定下来,不再移动。

接下来,在剩下的数字里继续寻找最小数,再将它和左边第2个数字交换位置。于是,4 和 13 也交换了位置。


我们将这样的一次交换称为“1 轮”。

到了第k轮的时候,就把剩下的数字中最小的一个, 与左边开始第 k 个数字进行交换。于是在结束第 k 轮后,从左数的 k 个数字便都按从小到大的 顺序排列了。

只要将这个步骤重复n次,那么所有的数字都将按从小到大的顺序排列。


现在将这本电子书免费分享给大家:


我的第一本算法书

电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍。


链接:https://pan.baidu.com/s/1kx7z9ZcTFr9hxh9cvJLc-w

提取码:4s22

你可能感兴趣的:(每个程序员都应该掌握的算法有哪些?我的第一本算法书)