我们来学习《C程序设计》第二课——算法

 2024-02-29 02:06:05  阅读 0

注意,在阅读本文之前请认真学习《C程序设计(第五版)》的第2章,以获得更大的收获。

注意,本文适合初学者学习。

c语言程序设计项目教程_程序语言设计课程_程序设计语言基础(3-3)

程序的灵魂——算法 算法就是思想

算法是解决问题的想法。 在写代码之前,必须有一个清晰、严谨的思路,明确哪一步要达到什么目的。 试想一下,打开编辑器,盲目地敲代码,是多么痛苦的事情。 这是作者的亲身经历。 在写代码的过程中,大脑会突然断电:敲下几行代码,然后又删除,甚至不由自主地删除。 输入几个字符,然后疯狂地按删除键。

那么初学者如何才能更深入地理解算法的含义呢?

首先从字面上理解——计算方法。 计算是我们非常熟悉的数学问题。 以书中1到100的自然数之和为例。 我们上学的时候,老师会带着我们一起推导,最后总结出算术数列之和的公式。 可以称之为算法。

第二是逻辑。 计算方法严谨,过程中的每一步都必须符合逻辑才能达到预期的结果。 ·并且逻辑是分层的,每一层都有自己内部关联的逻辑,可以独立于其他层逻辑,也可以决定相邻层甚至整个世界的逻辑。

细化和抽象。 一个算法可以解决从1到100的自然数之和,但无法解决从1到200的任何事情。这显然不是一个好的算法,甚至不能称为算法。 解决一个具体问题后,我们对解决问题的过程进行改进和细化,并抽象为该类问题相应的解决问题的方法。 它不仅仅是1到1000的自然数之和,而是任何等差数列的和。 那么这种简洁的解题方法就可以称为算法。

算法推演后来似乎变成了数学问题。 学好算法需要一定的数学思维,而不仅仅是简单的加减乘除。 我们需要针对不同的问题建立相应的数学模型来解决。

一般来说,初学者不要害怕“算法”,练习解题思路,理清主线逻辑和分支逻辑; 而且,他们必须抛开编程语言,不要想“我连编程都不会,怎么会懂算法呢?” 这是思想上的误解。 程序是为了实现算法,算法是程序的灵魂。 程序可以用多种语言编写(C语言只是其中之一)。 只有充分理清它们之间的关系,才能对我们今后的深入研究有所裨益。

工作中的算法

工作中,除了算法工程师等职位外,其他程序员职位在工作中很少遇到纯粹的算法任务。 常见的纯算法问题如:用户行为剖析、搜索建议、内容推荐、广告推荐等,背后都是各种数据模型。

根据笔者的经验(后端开发),我遇到的算法问题基本上都融入到了业务代码中。 需要特殊算法的业务将由专门的算法工程师打包对外开放。

项目如何拆分,模块如何分解,某个类或功能实现什么样的业务,取决于项目本身所属行业的经验积累和业务研判。 文章开头就提到:算法是解决问题的思路。 如果提升视角,把整个项目看成一个问题,那么项目的顶层设计、模块拆解、功能划分等都是宏观意义上的算法。

再开阔我们的视野,国家的百年规划,也就是我们常说的“十四五”规划,是一个五年的国家发展规划。 这也是一种算法。 它解决的问题是如何在五年周期内发展一个国家。 提高整个国家政治、经济、文化、教育等综合水平到一定水平。

注:“宏观算法”只是作者为了加深对算法的认识和理解而提出的一个术语。 它不存在于计算机术语中。

算法练习

推荐的网站是Likou/。 注册后,从推荐的新手村开始练习,从易到难。

但练习的前提是我们会一门编程语言。 即使我们还不懂C语言,我们也可以先注册。 我们可以不用编写正式的代码,而是以“伪代码”的形式表达我们的算法,等到我们学习了C语言相关的语法和数据结构。 只要将“伪代码”转换成C语言代码,这样我们既可以验证我们的算法,又可以练习C语言。

算法练习最好不要中断,对以后的求职面试会有很大帮助~

算法的未来

近年来,随着大数据、人工智能、机器学习的快速发展,算法的概念逐渐被大众所熟悉。

基于大数据的人工智能已经经历了数亿甚至更多的模型训练和学习,也已经应用到各个领域。 内容推荐,您现在正在阅读的文章根据您日常的浏览行为经过一组算法处理后推荐给您; 智能客服根据以往用户的问题自动解决您的问题(虽然有时很有用,但目前真人客服还是有需求的); 智能机器人每天与你沟通,了解你的习惯和行为。 其实更重要的是能从你身上赚钱^_^

那么未来的算法会是什么样子呢? 有一个问题不能忽视。 算法的逻辑仍然是由人类决定的。 如果算法能够净化自身,跳出最初定义它的人的逻辑,那么《西部世界》、《逃亡玩家》等科幻影视剧也可能成为现实。 ……

C程序系列

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码