算法,从今天开始
作为一名长期的 CRUD 或者说 spring 工程师,算法甚至从没出现在我的职业生涯中。大学没学过,工作以来 99.9%的时间也没用过。我是那种在鄙视链底端的代码打字员,就是又写 Java 又写业务,业务上就是 spring+mybatis 一把梭,Java 也就增删改查,能有什么机会碰到算法呢,实际上也确实没有。
开个小玩笑,有时候自嘲也未必是件坏事,其实 Java 或者其他任何语言本质上没有区别,各有优劣,术业有专攻,但 Java 可以快速实现业务同时也能保证一些性能和安全,招人也方便,这点上别的任何语言都做不到的。Java 也在不断进化,至少在 Java 这条路上深耕下去对饭碗来说是安全的。回到我自身,写了好几年 Java 业务之后,总有一种在原地踏步的感觉,在寻找各种突破口来提升自己。学习新的框架和架构理念似乎是一条靠谱的路,业务相对稳定,引入新框架新技术的成本太高,如果不用新框架又很难把自己的所学融入到自己的知识体系中。这个时候便想到了算法。
抽象是 Java 的精髓,算法是所有语言的精髓。同时也是各大公司面试必不可少的环节,临时准备起来还是挺痛苦的。所以把算法当作一个日常的技能训练是一个不错的选择。刚开始会很难,就像健身一样,一个肥宅做俯卧撑难吗?恐怕涨红大脸只能做 10 个,真的太难了。但如果每天坚持 5 个,半个月之后每天 10 个,坚持下去,很快就能做 20 个,30 个。彭于晏说,有时候只有坚持下去才能看到希望。人往往是短视的,意志不坚定就容易被眼前的困难吓倒。
所以不妨就从简单的开始吧。我们总在说排序,不如就从排序开始,慢慢接触,慢慢熟悉。但在开始学排序之前,我们得做一些准备工作。下面分享我的一些小工具出来。
开发工具
算法的练习不需要什么强大的 IDE,用 vscode 或者 idea 的 community 版本即可,我个人推荐还是第二个,当然如果你有商业版最好了。
新建项目
新建一个基础的 maven 项目就好了。为什么要用 maven 呢,当要用到什么工具类时可以随便添加依赖,也可以写单测来做一些验证,就不要总是用 main 函数了。
工具类
简单分享 2 个排序要用的工具类,写的比较随意,但是能用。
生成随机数组
验证数组是否已排序
两个值交换,Java 的交换比较特殊
评论