为什么要学算法?

在日常生活中我们不知不觉会用到算法。如购买商品时候要货比三家,对各个商家的产品质量和价格进行排序;买房、孩子上学、买车、投资选择、玩游戏的策略等等,都会遭遇到什么是问题的优选这样的抉择。你要是懂得算法的原理,对培养逻辑思维、我们做事的行为决策有十分重要的影响。

关于算法的概念有很多,大家也可以到网上了解,但看完也是有点晕,但现在,我想先直接介绍一个排序算法作为例子,抛开复杂的术语,让大家一起简单地了解一下:选择排序

遇到问题

有以下数列

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两层迭代,一层是对整个数列遍历做修改,第二层作为对比大小的查找;

结语:

以上仅仅是介绍性的举例,毕竟具体能够用到生活中的算法不常见,或者说是生活不仅仅由单一种算法的因素来决定的。

不管用哪种语言程序,算法都是不可或缺的,不过如果认为只有学电脑的人才要了解算法,那就太可惜了。算法其实是一连串解决问题的逻辑步骤,只要熟悉这些步骤和运用方式,每个人都能设计自己的算法并应用于各种不同领域。学习算法正是构建严谨思维和帮助做出最佳判断的训练~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180614G1IKB500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券