在日常生活中我们不知不觉会用到算法。如购买商品时候要货比三家,对各个商家的产品质量和价格进行排序;买房、孩子上学、买车、投资选择、玩游戏的策略等等,都会遭遇到什么是问题的优选这样的抉择。你要是懂得算法的原理,对培养逻辑思维、我们做事的行为决策有十分重要的影响。
关于算法的概念有很多,大家也可以到网上了解,但看完也是有点晕,但现在,我想先直接介绍一个排序算法作为例子,抛开复杂的术语,让大家一起简单地了解一下:选择排序
遇到问题
有以下数列
3, 44, 38, 5, 47, 15, 36, 26, 27, 3, 46, 4, 19, 50, 48
请由小到大排列。
选用“选择排序”算法
如果你问我怎么知道一开始用排序算法?因为我曾经有了解过啊!对于预先没看过的人可能没有头绪,要思考一番,这就是站在巨人的肩膀上。
如果你问,为什么是“选用”?因为算法有好多种,解决问题的方法由好多,所以我们可以有“选择”的。你有时间问问题,不如多看几次下面的图片感受一下啦:
因为篇幅关系,举短一点的数列为例:(可见人为排序是一件多么麻烦的事)
有小到大排列初始序列:
第1趟:1与3互换 :1 { 22 38 38 3 47 }
第2趟:22与3互换:1 3 { 38 38 22 47}
第3趟:38 与 22互换:1 3 22
第4趟:不动:1 3 22 38
第5趟:不动:1 3 22 38 38 47 完成
分析步骤
第一步:每一轮的排序对比;(与数列有多少个数有关)
第二步:对比后,交换最小的数;(这一步与数列有多少个数无关)
第三步:循环,直到数列全部对比完毕。
这样使用算法的过程分析就像这样的一个一步步的流程:
优化与小结
以上的分析,是我按照要求一步步来的操作进行排序,但是实际情况是,要面对数据量比较庞大、步骤数比较多、资源有限等条件限制的时候,可不能这样一步步地执行了,需要借助计算机编程的协助和在这个算法的基础上进行优化,进而提高我们的效率。
人生小结:
1、遇到问题(了解问题不要慌)
2、选用适合的算法(选择大方向与定位)
3、优化(通过实践具体优化细节)
golang代码与结语
可通过编程来实现算法,相对于硬件,软件是成本较低的一个尝试:
体会一下程序的写法:
*1 把要实现交换功能的部分独立写出一个函数;
*2 for两层迭代,一层是对整个数列遍历做修改,第二层作为对比大小的查找;
结语:
以上仅仅是介绍性的举例,毕竟具体能够用到生活中的算法不常见,或者说是生活不仅仅由单一种算法的因素来决定的。
不管用哪种语言程序,算法都是不可或缺的,不过如果认为只有学电脑的人才要了解算法,那就太可惜了。算法其实是一连串解决问题的逻辑步骤,只要熟悉这些步骤和运用方式,每个人都能设计自己的算法并应用于各种不同领域。学习算法正是构建严谨思维和帮助做出最佳判断的训练~
领取专属 10元无门槛券
私享最新 技术干货