对于像我这种情况,之前没怎么接触过算法或者只是简单了解并没有认识到算法的重要性的,终于下定决心要认认真真、踏踏实实去学习一个个经典算法,我希望这对于未来是非常重要的第一步。通过博客的方式来深入思考,督促自己,也希望在此过程证有和我一样,非计算机专业出身的同学能一起交流,共同体会算法的魅力。
算法是计算机的灵魂,它作为一种思想,使得我们的思维变得更清晰、更有逻辑。也许是现在变化太快,层出不穷的炫目技术、快餐速成的编程培训或者封装良好的算法接口,让很多像我一样只想盲目去写程序,却又没有清晰的思维和经过试验分析的解决方案。只有把握抽象层面的算法分析,才能不因外表的变化发展而过时淘汰,也才能对得起自己珍贵的时间。
于是,让我开始上路吧。
1、分而治之策略
比如足球世界杯,我们要通过世界杯决出世界上最好的一支球队,于是通过各大洲的分区比赛选出几支球队,再在这世界杯的32强决一雌雄。把一个大问题(全球各国家足球队选择水平能力最强的一支)分解成多个类型,相同规模,相对更小的小问题(各个赛区的强队),再分别解决更小的问题(小组赛、淘汰赛的角逐),最终使得一个大问题迎刃而解,这就是分治策略。
分治策略可概括为以下步骤:
(1)分解(Divide)