网站底部有很多图标广州网站建设及推广
网站底部有很多图标,广州网站建设及推广,网站正在建设中页面设置,首页排名优化公司当我们听到“算法”这个词时#xff0c;很自然地会想到数学。然而实际上#xff0c;许多算法并不涉及复杂数学#xff0c;而是更多地依赖基本逻辑#xff0c;这些逻辑在我们的日常生活中处处可见。
在正式探讨算法之前#xff0c;有一个有趣的事实值得分享#xff1a;你…当我们听到“算法”这个词时很自然地会想到数学。然而实际上许多算法并不涉及复杂数学而是更多地依赖基本逻辑这些逻辑在我们的日常生活中处处可见。
在正式探讨算法之前有一个有趣的事实值得分享你已经在不知不觉中学会了许多算法并习惯将它们应用到日常生活中了。下面我将举几个具体的例子来证实这一点。
一、二分查找算法
例一查字典。在字典里每个汉字都对应一个拼音而字典是按照拼音字母顺序排列的。假设我们需要查找一个拼音首字母为 r的字通常会按照图 1-1 所示的方式实现。
翻开字典约一半的页数查看该页的首字母是什么假设首字母为 m 。由于在拼音字母表中r位于 m 之后所以排除字典前半部分查找范围缩小到后半部分。不断重复步骤 1. 和 步骤 2. 直至找到拼音首字母为 m 的页码为止。 图 1-1 查字典步骤
查字典这个小学生必备技能实际上就是著名的“二分查找”算法。从数据结构的角度我们可以把字典视为一个已排序的“数组”从算法的角度我们可以将上述查字典的一系列操作看作“二分查找”。
二、“插入排序”算法
例二整理扑克。我们在打牌时每局都需要整理手中的扑克牌使其从小到大排列实现流程如图 1-2 所示。
将扑克牌划分为“有序”和“无序”两部分并假设初始状态下最左 1 张扑克牌已经有序。在无序部分抽出一张扑克牌插入至有序部分的正确位置完成后最左 2 张扑克已经有序。不断循环步骤 2. 每一轮将一张扑克牌从无序部分插入至有序部分直至所有扑克牌都有序。 图 1-2 扑克排序步骤
上述整理扑克牌的方法本质上是“插入排序”算法它在处理小型数据集时非常高效。许多编程语言的排序库函数中都有插入排序的身影。
三、“贪心”算法
例三货币找零。假设我们在超市购买了 69 元的商品给了收银员 100 元则收银员需要找我们 31 元。他会很自然地完成如图 1-3 所示的思考。
可选项是比 31 元面值更小的货币包括 1 元、5 元、10 元、20 元。从可选项中拿出最大的 20 元剩余 31−2011 元。从剩余可选项中拿出最大的 10 元剩余 11−101 元。从剩余可选项中拿出最大的 1 元剩余 1−10 元。完成找零方案为 2010131 元。 图 1-3 货币找零过程
在以上步骤中我们每一步都采取当前看来最好的选择尽可能用大面额的货币最终得到了可行的找零方案。从数据结构与算法的角度看这种方法本质上是“贪心”算法。
小到烹饪一道菜大到星际航行几乎所有问题的解决都离不开算法。计算机的出现使得我们能够通过编程将数据结构存储在内存中同时编写代码调用 CPU 和 GPU 执行算法。这样一来我们就能把生活中的问题转移到计算机上以更高效的方式解决各种复杂问题。 Tip 如果你对数据结构、算法、数组和二分查找等概念仍感到一知半解请继续往下阅读本书将引导你迈入数据结构与算法的知识殿堂。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/90478.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!