每个程序员都应该掌握的算法有哪些?我的第一本算法书
每个程序员都应该掌握的算法有哪些?
都知道程序员工资高,其实会算法的程序员工资更高。
我本科专业是计算机,大一大二的时候还搞过ACM竞赛。虽然本科时期的我经常逃课,文化课也没有很认真学,但是我的算法功底还是很不错的。因为算法功底好,所以我其他专业课即使并没有很认真学,成绩也没有很差,哈哈哈。当然其他文化课就不忍直视了。
上面的照片是曾经稚嫩的我,有一次参加亚洲区域赛拍的照片。
感兴趣的可以关注我的公众号:Java编程社区
一起搞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
公众号 Java编程社区 更多学习资源提供下载。