编程语言应用

首页 » 常识 » 问答 » 一起学C程序设计第二课算法
TUhjnbcbe - 2023/9/23 19:42:00

注意,请认真学习完《C程序设计(第五版)》第二章后再阅读本文会有更大的收获。

程序的灵*——算法

算法即思路

算法即解题思路。在编写代码之前,必须思路清晰、严谨,具体到哪一步实现什么样的目的。试想,打开编辑器盲目的敲代码是多么的痛苦,这是笔者的个人经历,在编写代码的过程中会有大脑突然断电的情形:敲几行代码接着又删掉,甚至不由自主的会随意敲几个字符然后疯狂的点删除键。

那初学者怎么更加深刻地理解算法的意义呢?

首先从字面上理解——计算方法。算一道数学题对我们来说再也熟悉不过了,就拿书上1到自然数求和来说,当初上学的时候老师会带着我们一起推导,最后总结出等差数列求和的公式,即可称之为一种算法。

其次是逻辑性。计算方法是严谨的,过程中的每一步都要符合逻辑才能得出想要的结果。·且逻辑是有层次的,每一层又有其内在的关联逻辑,可独立于其他层逻辑,也可决定相邻层甚至全局的逻辑。

精练和抽象。一个算法,能解决1到的自然数求和,但是1到就无能为力了,这显然不是一个好的算法,甚至不能称之为算法。在解决完某一个具体问题后,我们提升精练解题过程,抽象成对应的这一类问题的解题方法,不仅仅是求和1到0的自然数,而是求和任意的等差数列,那这个精练的解题方法就可称之为算法。

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

综合来讲,初学者不要害怕“算法”,多锻炼自己的解题思路,理清主线逻辑和分支逻辑;再者就是要抛开编程语言,不要有“我连编程都不会怎么会算法”这个思想误区。程序是为了实现算法,算法是程序的灵*,而编写程序可以有很多种语言(C语言只是其中一种),要充分理清明白他们之间的关系,才有利于我们往后深入的学习。

工作中的算法

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

基于笔者的经验(后端开发)来讲,我遇到的算法问题基本上糅合在业务代码里,需要特别用到算法的业务则会由专门的算法工程师封装好对外开放调用。

一个项目怎么拆分,一个模块怎么分解,具体到某个类、某个函数实现何种业务,这个要靠经验的积累和对项目本身所属行业的业务研判。文章开头讲到:算法即解题思路,那如果把视角抬高,整个项目作为一道题,那么,对项目的顶层设计、模块拆解、功能划分等就是宏观意义上的算法了。

再把眼界放宽,国家的百年计划,或者我们常听的“十四五规划”,即一个五年周期的国家发展的规划,这也是一个算法,它解决的问题是如何在一个五年周期内把整个国家的*治、经济、文化、教育等综合水平都提升到某个档次。

注意:“宏观的算法”只是笔者为了加深对算法的认知和理解想到的一个名词,在计算机术语里并不存在。

算法练习

推荐网站力扣

1
查看完整版本: 一起学C程序设计第二课算法