粉丝837获赞5831

同学们来看到我们的顺序结构基础练习五,那么这道题的话是去求解一个输入一个三位数啊,需要我们自行的来进行一定的操作,来计算出 我们的这个三位数的一个反向值啊,反向值,那么注意一个三位数啊,因为题干中已经指明一个三位数了,那么我们先来想一想,如果说题干中并未给我们指明到底是一个几位数,我们怎么去描述我们输入的这个数是一个三位数呢? 首先我们想到一个点,三位数,三位数,最小的三位数是多少呀?最小的三位数,注意哦,三位数, 最小的三位数是我们的一百,那么最大的三位数呢?九百九十九, 所以各位注意,如果说以后你在做一些类似的题型里面,需要你来判断是一个几位数的时候啊,如果说只说,哎,我需要输入一个三位数,那么我们需要来输入一个数的话, 如果说需要来判断一下他是否是一个三位数,我们可以来判断啥呀?来判断这一个数是否在一百到九百九十九的这一个区间。当然这道题目的话,已经给我们指明是一个三位数了,由此我们就不用再去判别他是不是 处在这一个区间之内了啊。那么再来看要求算出 a 的一个反向值,各位注意反向值,什么叫反向? 那么这里先举个简单例子,对于一个三位数,比如说这里有一个数字一百二十三,那么这样的一个数的话, 如何来将其进行反向啊?把它进行反向,反向之后,也就是这一个一百二十三会变成多少呀?三百二十一啊,这就是一个反向的过程,那么当然注意到一个点, 我要来反向的话,怎么来反向,这才是关键。首先先想到一个东西,三位数,三位数,为什么叫做三位?有哪三位啊?我们先想到三位数的话,有这一个一是什么位啊?百位, 这一个二是什么位啊?十位,这一个三是我们的一个个位,所以你会发现一个三位数,那么 就可以理解为由我们的百位、十位、个位,三个不同的位数来进行组成,那来进行组成。当然有一个三位数之后,如何来将其进行反向?你会发现一个点,我们之前的百位上的一,现在跑到哪里去了呀? 跑到了个位上去,而之前的十位的二还是十位,而之前的个位上的三现在充当了哪一个呀?百位, 所以我用不同的颜色给大家填涂一下,你看一下区别,这是之前个位上的三,现在跑到现在的一个百位去了,而之前的十位的二没有变化,我就不去涂它。那么再来看 之前百位上的一,现在跑到哪里啊?个位上去了,这里发现一个点,对于此处我 我们的一个三位数,要想将其反向的话,就可以列为一个东西,也就是将他的什么呀?百位,十位,个位上面的这一个数字分别给拿出来,再来进行重新的组合啊,重新的组合, 那么我们来看一下怎么来组合,所以说我们就要想到一个点,怎么来表示百位,十位个位的数字呀?啊?首先各位注意, 百位,百位,百位怎么来表示?我们先想到一个点,关于一百二十三啊,一百二十三,我可以怎么来进行操作呢? 一百二十三,我们可以通过除以一百,除以一十的方式来取整取于来将相应的我们的数字给拆分出来啊,给拆分出来,那么这里来简单的写一下,大家看一看啊,大家看一看, 对于一个数字而言啊,对于一个数字而言,这一个一百二十三,除以一百,你看一下等于多少?很多人说等于一点二三,那么你那样去想的话就很片面了,注意,通过之前我们所学的方式, 要想来做除法,我们就想到,哎取整数,取余数的方式来进行操作,那么我们看一下一百二十三,除以一百,整数部分最大相一于多少于二十三,同理,我们再来用一百二十三, 如果说来除以一十,你看一下等于多少,是不是商十二余三,你会发现一个东西,此处出现的一和三,我们可以通过直 除以一百取他的哪里啊,取他的整数部分,可以直接得到我们的百位上的数字。一,或者用我们当前的三位数来除以一十取哪里?取余数部分就可以得到我们的个位上的数字。所以说我们的百位和个位是最简单的啊,是最简单的。 那么来看一下我们的百位,我们可以将其描述为用我们的一个一百二十三啊,一百二十三, 整除于一百得到啊,整除,向右的下划线表示整除,而个位 也很直白,我们刚刚在右侧发现直接通过这一个三位数啊,来除以一,一时取哪里取余数啊?除以一时 取余数就可以得到我们的什么呀?个位上的三这一个数字。当然你会发现一个东西,百位和个位特别好拆分出来,但是十位就有点难度了,个位注意一个点, 十位上的数字,因为它的左右两端是夹的,有其他的位数上的数字的,那么你想要直接取到的话就很难,那怎么办?通过间接的方式怎么来间接?各位看好,对于刚才我们所写的步骤中, 在第一种方式里面,第一种方式里面,你看一下,我们一百二十三除以一百, 商多少?商一余二十三。而我们十位上的数字二跑到了余数这里去,我们可以通过鉴定方式再来做一次,用此处所剩的余数二十三,再来除以一十, 商二于三。你会发现我这一整个这一块啊,一整个这一块 就可以表示为了我们的一个十位的一个变化过程,你看一下,先用三位数除以一百取余数,得到二十三,再用该结果再来除以一十取整数,就可以得到这一个二了,这是第一种。那么第二种, 第二种,利用这一个三位数除以一十,我们的二在整数部分,那么可以利用到用该三位数除以一十取整数,得到十二,再用十二来除以一十, 伤多少伤一于二。你会发现我第二种方式也可以间接性的 得到我们的十位上的数字。二、怎么得到的?先通过三位数除以一十取整数部分,得到十二这个结果,再利用该结果除以一十取余数部分,就可以得到二。所以说我们的十位呀,那我们的十位有两种不同的方式 啊,十位有两种不同的方式,第一种,我们利用这一个一百二十三除以一,一百取哪里取余数,末的 一百取余数,这一个的结果是多少呀?是二十三,再利用该结果除以一十取整数啊,再用这一个结果除以一十取整数,就可以间接性的得到我们的这一个十位上的数字。二。 当然第二种方式,用这一个一百二十三先来除以一时取整数,再利用该结果来除以一时取余数, 就可以得到同样的结果,十位上的数字。二。说你发现十位上的数字,因为在最中间,我们想要去得到他的话,不能够像百位和个位一样很直观的,很直接的去得到,那么只能怎么办?用间接的方式去间接性的处理一下,一样可以得到结果。 好,那么这里我们学会了拆分,拆分了我们的一个百位十位个位上面的数字之后,再来利用用每一个位上的数字来重新乘以一十,乘以一百乘以一,来进行他的百位十位个位上数字 的一个替换。好,那么来看一看。首先我在这里的下方哈,用一个为代码,我们来描述一下啊,来描述一下,第一步, begin 啊,他说要输入一个三位数 a 啊,题干中已经给我们指明了,要输入一个三位数 a, 我们就直接 input a 这样的一个变量名, 那么输入了一个三位数 a 之后再来啊,再来,他说要求算出 a 的反向值并输出啊,算出 a 的反向值并输出,我们来看一下, 首先这一个 a 的反向值呀,我们先想到一个点,这道题目有百位个位十位啊,有百位,个位,十位,那么怎么来表示百位?个位,十位,你可以用字母 a、 b、 c, 当然这里的小, 而且这么已经用过了,我们就不能再重复使用了,那怎么办呢?用我们的不同的 x、 y、 z 啊,也是可以的啊,也是可以的。 我用 x 来表示我们的百位啊,这一个百位的话,通过我的这一个三位数来除以一百取整这一个值,负值给 x 变量, 此时 x 变量就表示为了百位上的这一个数字啊。比如说刚刚的例子,假如说这个 a 是一百二、二十三的话,那么此时一百二十三除以一百 取整这一个结果就是一,将其复制给 x, 此时 x 变量就表示为了百位的这一个数字。一啊,再来,我用 y 来表示我们的十位,十位的话,因为有两种方式,你任 选一种都行啊,你任选一种都行。用三位数除以一时取整,用该结果再来除以一时取。那么用 z 字母来表示为我们的一个 个位,个位的话,就直接三位数除以一十取,就直接可以得到我们的一个个位啊。个位。好了,那么有百位、十位,个位,分别用了我们的字母 x、 y、 z 来进行表示, 表示完毕之后,此时我们再来,那我们再来利用到刚才讲到的一个点,我们要想有 x、 y、 z, 如果说 x、 y 这一个字母 a 啊,假如说就是一百二十三,那么 x、 y、 z 分别表示数字就是数字一,数字二,数字三, 怎么来将其反向?好了,这里看好了,各位,我用一个字母 b 来表示我们新的啊,新的这一个 三位数,那么这一个三位数因为是反向的,我们想一想,这一个 x 是之前的百位,现在要冲到什么位啊?大家看一下这里,之前百位上的这一个数字,现在冲到什么个位,也就用 x 直接乘以多少, 乘以一就是个位,加上之前的十位,我们用 y 表示的,现在要表示什么呀?还是十位,那就乘以十, 再来之前的个位,我们用的 z 个位,现在变成什么位了?百位,那么要想把这个数字变成百位去的话,是不就乘以一百呀?由此我们这样子的方式就进行了,将我们的三位数 由最开始的方式变成了一个反向,结果执行完毕之后,最后再来输出啊, print 输出我们的这一个字母啊,字母 b, 这一个字母 b 就是我们的变量 b, 这个变量 b 就表示为了我们刚才所表示的 x、 y、 z 三个来进行反向的一个结果啊,只是输出的一个结果就 ok 了,最后再按的结束 就完成了啊,就完成了。好,那么来简单的把这道题的一个流程图给大家绘制一下啊,给大家绘制一下, 首先这道题目的话,最开始有一个 begin 啊, begin 就对应到了开始我们的一个开始框 开始往下走,最开始要输入一个三位数啊,一个三位数,那么这一个三位数的话,因为是要输入,所以我们用到了一个平行四边形,在里面写好汉字输入 a 变量,这一个 a 变量就是我们的这一个当前的三位数。好,输入完这一个变量之后,往下走来进行拆分,要将这一个三位数的百位,十位个位分别给拆出来,再来重新组合,所以说最开始我们要干嘛呀?来拆分, 拆分的话,我们用到了负值的概念,用三个不同的变量名 x 表示为百位, x 等于啥呀?等于我们的这一个三位数 除以一百取整。取整说这一个 x 就表示为了当前这一个三位数的一个百位上的数字。那么做完这一步之后,再往下走来将我们的十位进行一定的取 拆分。那么注意十位的话,因为比较特殊,所以这个框稍微画长一点点,那十位上的这一个数字我们通过进阶的方式得到。首先用这一个三位数啊,用这一个三位数来除以一时取整 曲种, 再来啊,再来除以一十 取。当然你如果说采用我们的另一种方式来写的话,那这里的语句自己做一个相应的修改就可以啊,注意好到底是取整还是取。那么再往下走来进行我们的一个 z 变量,个位上的数字, 个位上的数字等于当前的这一个三位数来除以一时,取直接得到我们个位上的数字。 那么做完这三个拆分之后,此时 x、 y、 z 三个变量分别表示为了百位。十位个位上的数字,那么有了数字之后再来重新组合。我们利用到一个变量 b 来表示我们组合后的结果, b 变量 等于,首先 x 变量是之前的百位,现在要充当我们的一个个位,就乘以一,当然你这个一不乘也没关系啊, 加上之前的十位上的数字 y, 现在还是十位,所以乘以一十,加上之前个位的数字 z, 现在充当的是百位,乘以一百,那么做完这几步操作之后, 将这样的一个结果值复制给了 b 变量,此时 b 变量就表示为了反向后的一个结果,最后 再将我们的这一个必变量输出即可。啊,输出这一个必变量,最后在摁的结束就完成了这道题的一个反向值的 一个替换过程。所以各位注意,要想做反向的话,你要想到一个点,这种题型我们可以通过来将当前的数字进行拆分,分离不同的位数之后再来重新组合构成新的一个数字, 这样的话就可以执行到我们的一个反向结果了。那 ok, 好,大家课后把这道题目自己在草稿本上做一个补充终结。

同学们,一个算法他是用来解决一个问题,那这个问题解决的过程我们该怎么去表示他就是如何表示一个算法? 算法的表示方法主要有流程图、 n s 图尾代码和程序设计语言。同学们,我们学习 c 语言, 包括同学们后姐还会学习其他的语言,其实都是为了干什么?表示一个算法,就是把这个算法 用计算机去实现了,用计算机去实现了,这叫表示一种算法。表示算法,那么在我们具体用程序设计语言算法是这个语言呢?还是难度很大的,入门也比较难, 还有其他一些方法。其他一些方法,那比如说非常传统的流程图,就是一种非常好的表示方法, 那对于流程图来说,他是什么呢?他形式上是一种图形化的表示方式,是对这个算法用图形的形式表达出来,表达出来 那就是使用一组预定业的符号,使用一组预定业的符号,那就是提前约定好的符号来说明如何执行指定的任务。 有流针头,最大的优点是非常直观,非常清晰,那就是只要有 本概念的基本会流程图,了解流程图的人都能看得懂,都能去了解他。我们今天的城市设计开发,那都是团队开发, 所以我们对于流程图的概念我们一定要掌握的比较好,这样便于呢?我们在团队开发当中,对于整个流程的理解是非常清晰的, 我们实现起来就比较容易,因为这些符号都是我们提前约定好的。 比如说请同学们看一下,这是我们说到的他的基本的约定符号有这一些, 一个算法的开始和结束,我们使用这种椭圆框来表示,中间的处理过程用矩形框来表示,而这个菱形框我们代表的一种判断, 要输入,要输出,这是一个散法的一头和一尾,我们使用平行四边形来表示他, 另外呢,我们还要通过这种箭头啊来表达他的连流程线,当流程图非常大的时候,要进行跨越, 也就是一页纸画不下的情况下,到第二页上去,要把这些流程线通过流程点的形式把它连 接起来,叫做连接符,连接符,这是我们在画流程图的一些符号元素以及它的含义,这个同学们需要记得,我们希望同学们要能对我们简单问题,能够绘制流程图,这样对于程序设计的逻辑上 就非常清楚了,实现起来也就比较简单,这是关流程图的符号,希望大家能记得。接下来我们看一个例子, 这是一个球长方形面积的一个算法,那我们来看一下他的流程图,请同学们看一下,认识一下。开始椭圆框,结束椭圆框,这是一头和一尾。在 前面算法中说到,首先从键盘接收两个数,两个数就是用输入和输出的框来表示, 这里面浪一和浪二这个名称是可以自己来定义的,我也可以写 a, b 也是可以的,就是代表着他的长和宽。第三步要判断,判断这两个值是否均大于零, 所以用这种菱形框,请朋友们看好,这是一种判断的意思,判断的意思,他有一个入口,两个出口, 请同学们注注意看好啊,他是一入两出,一般情况下,我们对于判断宽都是 是一入两出,这是约定的,约定的啊,不能有三出,如果三出的话,就意味着他有奇异,有奇异。 如果两个数都大于零,这个位置写一个是是计算两个数的乘积,如果有一个数不是大于零的,这个位置写一个否,那就输出。请同学们注意,这是输出框,显示输入错误 面积值,求得以后,求得以后,我们往下看,这叫流程线往下走,那就是显示 resa 的值,把这个两个成绩的值输出来,输出来呀, 最后最后整个程序结束,这就是一个流程图的表示方法, 同学们看一下,那这样画起来比我们去写一个程序肯定要简单一些,同时这样的流程,这样的符号,同学们很容易去理解他,那就是我画好了,同学们容易理解,同学们画好了,同学们之间也很容易理解。这就是流程头的特点, 非常的清晰,非常的直观,便于呢我们对某一个问题的交流,某一个算法的实现,这就是如何表示一个算法。我们使用的一个非常直观,非常清晰的工具叫做流程图,流程图, 这就是求一个长方形面积的流针图,对于这个流针图呢,希望同学们需要能够自己画出来,照葫芦画瓢,把它表示出来,通过他能够熟悉,能够 理解,能够运用我们流程图中的符号开始结束流程线输入,输出。菱形框代表判断,矩形框代表的是处理框啊,处理框。

同学们来看到循环结构基础练习一这道题的话,是我们很典型的一个 n 项求和的例题,首先这道题通过题干的话,我们会发现这道题啊,是在做一个累计求加法的一个东西。那么注意 对于读题过程中,我们第一步啊,读完题之后,可以首先将题目自己把题干的含义来重新的梳理一下, 我们来看一下这道题目呀,无非就是来求一个 s 等于一加上二分之一,加上三分之一,加上省略号,一直加到 我们的 n 分之一,注意这里有一个变量 n 啊,他说 n 由用户输入得到。那么我们再来看 这道题啊,为什么叫做用到循环结构啊?为什么用到循环结构来做这种例题?注意一个点,循环循环,什么叫做循环?循环,我们可以简单的将其理解为重复的去执行某些特定的语句,重复的执行, 那么这道题要注意一个点,以后各位在解决我们的循环结构的例题的时候,一定要找到几个关键, 关键总共分两步,第一步,找变量啊,找变量,什么叫变量,也就是在中途过程中在进行变化的一些值啊找变量,这是第一步。第二步,找中指值,为什么找中指? 各位注意关于循环的一个很关键的点,循环循环,也就是重复的去执行某些语句,但是这一个动作的话,不能够无穷无尽的去执行它,也就是循环到某个地方会停止啊,会终止我们的一个循环,所以由此找两个关键啊,找两个关键。 这道题我们通过梳理之后啊,梳理之后你会发现 s 等于一加二分之一加三分之一,这里的话,后面的这些所有的一个值啊,都是一个分式啊。那么同样的这一个一啊,我们可以把它理解为这就是啥呀?这个一, 这一个一,我是不可以将其可以理解为是多少是我们的一分之一啊。啊?一分之一,那么各位再来看一下,我将一更改为一分之一后,你仔细看,分 子都是一,没有变化,那么没有变化我就不用管它是不是。再来看在每一项里面哪些东西在变啊?每一项,什么叫做项?好比此处,我们的第一项的值是多少呀?第一项的值也就是我们的一分之一,这是第一项。 第二项的值是多少?二分之一,第三项的值三分之一,第四项的值四分之一,一直省略号到 n 分之一。 各位注意看一个要点,这里面每一项上面的数值,我们可以把它取个名字啊,给它取个名字,叫做我们的项数,叫做我们的项数。所以各位注意,项数,项数,什么是项数?也就是 每一项上面的数值是多少?类比于这道题里面,第一项我们知道是多少?一分之一,第二项是二分之一,第三项是三分之一啊,所以我还是一样的规矩,我用黄色给大家涂下每一项啊,这样的所说的东西,每一坨黄色的就表示为每一项的东西。 那我们用一个像素来进行理解,像素,像素,再来看关于像素里面哪些东西在变化啊?第一个,每一个像上面的数值都是一个分式,也就是有分子,有分母啊,有分子有分母,我们可以理解为有分子 有分母,有分子有分母,那么对于一个象术而言,它是一个分式,由分子分母的形式来构成,分子都是一没有变化,而分母 之间有相应的规律变化,说明发现在项数里面每一个分母在变啊,每一个分母,分母上的数字在变化,怎么变的?我们来看一看每一个分母的变化都是什么呀? 一到二,二到三,三到四啊,后面省略号,你会发现分母的变化就在干嘛呀?每次在进行加一的操作,说这就找到了一个有规律的变化了,用到了循环,说循环,循环,找变量就是去找一些有规律的变化, 那么有规律的变化,我们发现分母在变,既然你在变,我就把它认定为是一个啥呀?是一个变量。分母,这是一个变量啊,分母,它是一个变量,既然你叫变量,是一个变量,变量,变量,我们注意 两个关键,对于任何一个变量,你要理解到两个关键点,变量,第一个,既然你叫变量,你是怎么变化的,是吧?这个很关键。第二个 变量,变量,既然你在变化,你从什么时候开始变?到你不可能说,你说,哎,你在变,我怎么变?你从什么时候开始变?是不是说注意到变量找两个关键,一个是变量是从何开始变化,也就是他的一个初始值。第二个变量是怎么变的? 我们来看一下关于找到的一个变化的一个东西,分母,分母,分母,我们看一下第一项,我们的分母的初始值是多少,就找第一项里面的分母是多少。一,由此我们对于分母啊,用一个变量,比如说我说,哎,用一个变量,用一个 m 来表示分母嘛,母嘛啊, 用一个 m 字母来表示这一个变的名称,那么对于 m 怎么变得,初始值是多少一,也就是将第一项的这个分母作为它的一个起始值,从第一项 a 五的分母从一开始变化,怎么变的? 第二项是多少?变成二分之一了,也就变成了二,我们的分母,第三项分母变成多少三,所以你会发现分母分母是怎么变的呀? 也就是一个用当前的分母值进行加一的累积变化,这里看一下,从右往左来读,用当前的 m 值加一重新复给 m, 这就在每次做循环再做这一个语句了啊,做循环的变化,这里看一下。我们来找变量怎么找到,找两个关键,一个是变量从何开始变的它的起始值啊。第二个也就是变量是怎么变的,如何变的, 说找到这两个关键呀,那么基本上你的个变量你就理解清楚了,对于某一个变量来表示什么值,找到了分母,用 m 表示,那么这里的像素,各位想想这个像素我就可以表示是啥呀? 每一项的支付就可以表示为 m 分之一啊,能理解吧?各位,你看一下我刚才用 m 这一个字母来表示为分母上的这个数值变化,那么我的项数值第一项是一分之一,第二项是二分之一,那么我是不是可以理解为是 m 分之一来表示为项数值啊?好, 用分母的变化来间接性的表达了我们的项数,那么请问每一项又在干嘛嘞?各位看一下这道题,为什么叫做一个很典型的 n 项求和, n 项求和的立体啊, 很典型的 n 项求和立体在怎么进行哈?在怎么进行?我们的一个 n 项求和,你会发现第一项的值啊,我们可以理由是一分之一就是一嘛,第二项值是二分之一,所以你看一下我们这里的 m 分之一是不是只是表示了每一项的数值啊? 同时这道题目因为要求啥求 s 啊,求这个求的和,由此还一个变量,这变量取名叫啥嘞?一个变量是分母,另一个变量我们把它叫做一个累加求和。因为这道题在做加法 啊,所以我们这种类类型的例题啊,也就是一个累加求和。怎么在做累加求和啊?什么叫累加求和?首先,这道题目题干里面是不是给了一个变量多少 s 啊?他给了一个 s 来表示为累加求和的一个值吗?怎么什么叫做累加求和?给大家 简单举例一下,累加球和累加球,也就是我用某一个值来一直往上面进行一个叠加,比如说我只是要做加法啊,第一项的值是一,那么在第一项的值的基础上去加第二项二分之一,加上来的值就是二分之三, 再来加第三项的值三分之一,再来加第四项的值,一直往我们的 s 上面做一个累加操作,所以我们取名叫做累加求和啊,用一个变量 s 来表示,那么找到一个变量 s, 同样的规矩, 和刚才分母一样来分析一个变量,我找到他在变,那么既然是一个变量,两个关键点, 变量的初始值是多少?其次,变量是怎么变化的?你看一下这道题目变量的初始值 s 到底怎么定义?很多人他说 s 初始值负为一啊,他说因为定向值是一。 各位注意一个点,既然我们要做分母分之一来表示项数,那么累加求和,你就想一个东西啊,以后不论是做累加还是做累成,你就想一个点, 我要做加法,那么我最开始负一个什么初始值不会影响整体的一个加法?结果你就想一个点吧,我比如说加一、加二,加三加四,请问去加一个什么值不会影响我整体的一个值啊? 是不是加一个零啊?由此累加求和这一个变量。一般来说,做加法,通常我们对于其变量的初始值呀,就定义为零, 因为零在后面加任何数都不会影响我的整体值,所以把它的值负为了零。其实再来 s 在怎么变化,各位,你会发现我们的 s 在做累加求和,也就是用当前 s 的值来加什么呀?加新的项数,这里看一下,第一项的值一分之一,第二项的值二分之一,第三项的值三分之一。说 s 就是用刚才所求的和来加一个新的项数值,这项数怎么表示?你看一下我们刚才是不是用到了 m 分之一来表示啊, 也就是 s 加上一除以 m 就是 m 分之一的意思啊。所以你仔细看一下这两个点, 这个啊,我们将其像素用分母的变化来间接地表示了像素,再将像素累加加到了我们的 s 变量上去,最后输出求得我们的 s 就可以了。当然 对于刚才讲到要想做 n 项求和的值啊,也是两个步骤,哪两个?第一个,找变量,我们总共找到两个变量,一个是分 分母在变化,由此我们用分母的变化列举一个变量名 m, 再用 m 分之一来表示为像素值。其次,有了分母变化之后,再来看累加求和,因为要做加法求和嘛。这种例题,既然你要做加法求和,我就定义了一个变量,当然,这个变量名题干已经给我们说了一个 s 变量名啊, 所以总共两个变量找到了。其次,再来第二个要点,要想做人像求和,除了找变量还有个什么呀?找中指值,所以各位注意中指值来了,中指值是多少?中指值? 中指值是多少?对于中指值,你会发现这道题目里面要做加法球,加到什么呀?加到第 n 分之一为止。这 n 是什么东西啊? 他 n 由用户输入,也就是我要做变化,什么变到什么位置啊?你说 s 来做终止值吗? s 这个变量就是要求他呀,肯定不行是不是?那么这个 n 放在哪里? 最后一项的分母上,也就是只要我的分母是小于等于最后一项的,我就要一直做循环做加法, 如果没有小于,那就一直往后面加上去。如果啊,大于了这一个 n 值,那么就不再做循环了。由此我们想到一个中指指,什么呀?也就是利用到我们的变量 m 分母,只要你是小于等于 n 的 啊,只要你满足于这个条件。我打个问号啊,只要你满足于这个条件,这是我们的一个宗旨值,只要你满足于这个条件,我们就要一直做循环。所以各位注意,循环,循环两个要 找变量,找完变量找终止值,终止值怎么去找?你就来看我们总共有几个变量,是不?总共两个变量,一个 m, 一个 s, 那么 s 是要我们要求的,结果肯定 s 不能拿来做终止值了。对于这道题,那么只能什么呀?用分母嘛, 刚好这个分母最后一项值是 n, 也就是只要分母的值是小于等于 n 的,我就要一直做循环了。 ok, 说这是关于一道循环结构,我们如何来解相应的例题啊?说这道题我讲的稍微比较细一点,比较慢一点啊,所以各位注意,以后你做类似的题型啊,就去找什么找我们的变量 好,找完变量之后,来看一看怎么来把我们的这一个这道例题,把它给运用起来啊,把它给解决起来。来看一下首先这道题目呀,因为他要求 我们的一个累加求和,从一分之一,也就是从一加二分之一加三分之一,一直加到 n 分之一,也就是我要解决问题啊,我第一步要干嘛呀?第一步我肯定是 先要输入一个变量 n 啊, begin, 因为最开始有一个,他说 n 由用户输入得到,各位看到没有? n 由用户输入得到。由此我第一步要干嘛?先来 input, input 输入一个变量 n 啊,有了 n 之后,管它 n 是多少,是不是啊?只要有了 n 之后,我就可以知道我的种植值了, a n 有值了。再来这道题目,几个变量,你要做循环这种立体怎么去写?我们的尾代码怎么来?通过尾代码画图哈,所以说,要想做循环结构尾代码,大家一定要把它在这里给它给用起来 啊。注意,关于变量,刚才讲到两个要点,变量变量,第一个变量初始值是多少?第二个变量是怎么变的?所以由此你在做循环之前呀,我们就要先将变量的初始值先定义了来。 m 是分母,初始值是一, s 是我们的累加求和,初始值是零。这里看一下各位,对于刚才我们在这里所定义到的分母 和我们的累加求和的这两个变量,我们定了初始值。说,你在做循环之前,既然我要无穷无尽的一直往下面做循环啊,我要在后面做很多很多的循环, 那怎么办?也就是我要先将变量的初始值先定义了来,就理解为这两个变量名从,哎,什么时候开始做,那么再来,有了这个之后,我们这道题我给大家用 why 啊,用我们的当形循环 why 来解题来解题, why 当形循环,也就是当条件成立,我就要做循环。什么条件成立?刚才我们才写到了条件 分母,只要是小于等于 n 的,我就要做循环,做循环就写上花括号,花括号里面就是循环,我们的循环成立,条件成立要做的循环题语句,循环题语句,也就是刚才我们的变量如何变的,各位来看一下。 所以这个东西很关键,找变量,变量初始值,其次,变量是怎么变的啊?你把这两个东西写到这里看一下,在后面写语句就来了呀,你先定义初始值,再到后面来写我们的变量变化。说来,第一步,先做累加求和 s, 先来加一下, 用当前的 s 加上当前的一除以 m, 也就是 m 分之一。这里看一下, s 初始值是零,我零加上初始值, m 是一一分之一,是不就是零加上一的意思呀?复改 s, 只是 s 的值是不变成一了呀。 那么下一次我还要来做用当前的一来加上下一次的 m 分之一,我的 m 是不是要变化? m 怎么变到?刚才我们写到 m 的变化也就是通过当前的 m 来加一进行得到啊,用当前的 m 加一来进行得到,那么变化之后,整个里面这 循环体就这两个渔具。这里看一下两个钓点哈,我给大家涂一下,大家仔细看一看,第一块黄色所涂的是不就是我们在刚才找变量?变量的初始值定义这里所描述的第二个 蓝色这一块是不就是刚才我们所描述的对于我们的变量的如何变化?你看一下是不是找变量,找变量变量初始值,变量怎么变的,是不是就挨着给用起来量,哎,给利用起来了好,当循环做完之后, 最后在干嘛呀?当我的 m 不再小于等于 n 了,也就是此时全部累加已经结束了哈,已经全部加完了,就输出累加球后的 s, 最后摁的结束即可,这样的话就解决了我们这道题的一个尾灯码的形式,这里看一下,一道题固然简单,但是我们怎么一步一步的来把我们的解题的一个思路框架给打好 说,以后你能够像这样子去解决解决一道循环结构的例题,先想到找变量,找终止,找完 之后再来看变量之间是怎么变的,以及变量的初始值是多少。你把这个东西找关键哈,把这个关键给找好之后,那么再来解这种题啊,就很简单了。好,我把这道题的一个流程图大致的给大家绘制一下。 首先第一步啊,第一步圆角矩形开始 向下走。先要来输入我们的 n 啊,输入一个 n 值来表示中值值, 输入了 n 之后往下走,有两个变量要定义其初始值,一个是 m 变量, m 等于一,一个是 s 变量 来表示为累加求和, s 等于零。所以以后你题做多了之后,你发现我们要做累加求和,要做加法, 既然你要做加法,什么值才不会影响我的整体结果,是不是啊?也就是将其初始值复位点,注意这条箭头画长一点点。为什么画长一点?各位注意 why why 建这种循环,循环的话,我后面是不是一定要构成一个闭合的环状啊,要再循环回来呀, 由此作循环。箭头向下,画好一个判断框,判断框里面写好语句, m 小于等于 n, 打上问号, 条件成立,我就要做循环。做循环就来执行我们的循环题语句, s 等于 s, 加上一除以 m, 也就是 m 分之一的意思。那么箭头 头再向下走, m 在做变化, m 等于 m 加一。做完变化之后,注意了两个循环题语句,我们就描述完毕了,再循环回去。 注意循环怎么画的哈。箭头向下,又回到我们的判断框之前,来判断是否还要执行下一次的循环。如果条件成立,继续在里面构成环状,直到我的条件不再成立了,这个条件不成立了,就退出循环。 退出循环也就是理解为花括号里面的我们的这一个花括号里面的循环体做完了就退出循环,接着咨询花括号外部的语句,输出我们的 s 平行四边形, 输出变量 s 所表示的累加求和的结果值,最后再向下画上一个圆角矩形,写上结束。那么这道题我们就完成了, 所以各位注意啊,关于一道 n 项求和类似的一个循环结构的题,你能够去找到几个关键点, 找变量,找终止值,在变量中又去找两个细节,找初始值,找变量是怎么变的,这种题型就能够解决了。好,这是我给大家写到的一个用 why 当心循环的一个解题思路,大家在课后还可以试一下我们运用 for 循环来解决这道例题,看一下有没有思路。当然你用 for 循环写完尾代码之后,再来绘制流程图,你会发现画出来的流程图啊,是一模一样的啊!所以说以后大 大家解题啊,你只要能够解决问题,不论你用 y 还是 for 都可以啊,因为最终我们在专升本考试里面会考察到的就是我们的流程图。好,那么课后自己把它做一个归纳,总结关于我们的 n 项求和的立体去如何进行思考。

同学们来看到顺序结构基础练习三这道题目的话,主要是考察一个点,我们要学会如何来进行变量值的一个替换。 首先,根据题干所给含义,输入了两个数 a 和 b 两个变量。 其次,他说要求在程序的运行过程中, a 和 b 两个变量所表示的值呀,发生了互换。发生了互换,那么怎么来进行互换?注意了, 这里先来给大家讲一个成立,我们来看一下。首先,此处有两个不同的亮 杯,左侧的我取名叫做 a 量杯,右侧的我取名叫做 b 量杯。那么各位注意,在两个不同的量杯里面分别装满了不同颜色的水。 a 量杯装满了蓝色的水,那么 b 量杯装满了红色的水。各位注意,两个量杯里面装了不同的水。那么如何来进行两个量杯值得替换呢? 只要我们想到一个点,在生活中,如果说有两个不同的瓶子里面分别装满了不同的液体,如何来将两个瓶子的液体交换顺序交换位置呀?各位想想, 要想互换怎么办?我们会想到生活中我们会想到用到什么呀?用到一个空的量杯,是不是哎,想到了一个第三的一个 空的量杯。那么在生活中我们会想到有两个量杯装满了不同的液体。要想进行两个量杯值得互换,那么我们会想到用到一个空的量杯来进行临时存储我们的某种液体。 那么首先有此例,我们可以想到,不论是先把 a 存到 c 量杯中去,还是先把 b 量杯的水存到 c 量杯去,都是一样的啊。所以说我们就列举一个例子来看一看。列举一个例子来看一看。 首先第一个我们第一步先来将 a 量杯啊 a 量杯的水先把它倒入到 c 量杯中去,这是我们的第一步。那么此时将 a 量杯的水倒入到 c 量杯 之后,你会发现 c 量杯零食装满了我们的 a 量杯中蓝色的水,而 a 量杯中我们可以解为哎,这个值我是不是可以解为哎把它给倒进去了呀?好,这是第一步。 第二步,此时我们可以去理解为我们的 c 量杯啊啊这一个 c 来将刚才 a 量杯蓝色的值进行了临时的存储。那么下一步我可以怎么做呀? 第二步将 b 量杯中的水啊倒入到 a 量杯中去,这是我们的第二步。由此你可以发现 我们在进行两个值的一个替换过程中啊,会用到一个中间的一个临时变量来临时存储我们的某个变量值。那么此时将必量杯的红色的水倒入到了 a 量杯中去。那么第三步我们就可以将我们的 c 量杯中刚才临时存储的 a 量杯中的蓝色的水倒入到 b 量杯去。这是第三步。 那么倒入进去之后,此时 b 量杯就拥有了蓝色的水,那么可以理解为啊把 c 量杯的东西啊哎又给倒了进去。所以我们注意到一个点, 在通过刚才的三个步骤之后,我们会发现此时 a 量杯由最初的蓝色的水变成了红色的,而 b 量杯由最初的 红色的水变成了现在的蓝色的,进行了值得替换。那么注意到一个点,这里用到了一个很关键的东西,也就是我们的这一个 c 量杯啊 c 量杯。所以我们可以理解为一个点 c 量杯的 作用啊。就好比是一个什么呀,临时空间,一个临时空间,一个临时变量来存储某一个变量中原有的值。所以各位注意,要想在我们的程序中实现值得切换,我们要学会到这一个思想,利用到一些临时变量。注意 利用到一些临时变量。 那么刚才的过程是怎么操作的?我们利用我们的一个之前所学的尾代码来看一看啊,来描述一下。来简单的描述一下 对于刚才的操作过程,我们会发现第一步我们的第一步是干嘛呀?将 a 量杯的水倒入到了 c 量杯。由此第一步将 a 两杯的水倒入到了 c 两杯。利用一个伪代码中的一个负值过程,从右向左读,将 a 的值负值给了 c 变量。那么第二步我们就可以什么呀?将 b 两杯的水啊, b 两杯的水 负值给谁啊? a 量杯啊,将其倒到 a 量杯去。那么第三步,将刚才的 c 量杯的水倒入到 b 量杯中去。 这样总共三个步骤就实现了我们的一个值的替换。那么做完这一个步骤之后,你就会发现 a 和 b 两个变量的值呀,就发生了互换, 就发生了互换。好,我们将这一个思想啊,将这一个思想运用到我们的这道题的一个解题过程中去来看一看如何实现。根据这道题目题干所描述, 要首先输入两个数 a 和 b。 由此我们在解决这道题之前呀,先把尾代码写一写啊, begin。 那么 begin 写好之后,因为他说要输入两个数 a b。 由此我们的第一步就要干嘛呀? input 先来输入 a、 b 两个变量,那么注意我们这里的 a、 b 两个变量的值啊,随意定义啊!随意定义 好。那么输了两个变量, a 和 b 分别表示两个数字。之后再来他说要求程序运行后, a、 b 的值发生了互换,那么怎么来互换?注意到一个点,刚才我们这里所描述的三个步骤,也就是这里来进行 a、 b 变量的值的替换过程。首先 不论是先把 a 付给临时变量,还是先把 b 付给临时变量,都可以啊,反正是互换的过过程。那么第一步,我们首先先将 a 变量的值复值给一个临时变量 c。 哎,这个 c 是一个临时变量,各位注意啊,就好比这里的空杯子一样。那么第二步将 b 变量的值负值给我们的 a 变量。 第三步将 c 变量的值复制给我们的 b 变量。好。做完这三步操作之后,此时我们可以发现只发生了替换,怎么在替换啊? 此时三步执行完之后, a、 b 两个边的值已经发生了互换了,那么我们可以干嘛呀?此时就来他说哎。输出 最后 a 和 b 的一个结果 print a b and 好。注意, 既然是值得互换,我们来用两个例子把两个数放进去,我们来验算来看一看到底是怎么在互换。首先比如说我说 三,这个 a 变量哈,他的值是三, b 变量的值是四。我们来看一看啊,这是我们举的一个例子哈。比如说啊,比如说哎, a 变量值是三, b 变量值是四。那么第一步我将 a 变量的值复制给了 c 变量,那么 c 变量的值变成多少?量 变成此此时的多少?三啊。将三付给了 c, 我们可以理解为这一步呀,也就是将三给到了 c, 此时这是 c 边上的值是不是?那么再来第二步,下面将 b 边的 的值给到 a 啊, b 变量的值是四,将四这一个值重新负给 a 变量。再下一步,将刚才的 c 变量的值再负给 b 变量, 那么刚才的 c 变量值由我们的最开始的第一步已经完成啊。也就是最开始是不是用用这个 c 变量来表示了一下刚才 a 变量的这个三,这个值啊。好。做完之后一个从上至下的一个顺序结构依次执行。那么做完最后再来输出 a、 b, 此时 a 的子女范是多少?量是四, 此时 b 的值是多少?是三啊。所以各位会发现我执行完毕之后,这两个变量啊,这两个变量很明显的发生了,值得替换,各位看到没有啊?所以说这就是一个什么呀,我们关于一个顺序 结构中的一个指导互换过程。当然这种思想的话在后面我们也会经常用到。所以说在最基础的这一道题里面,我们要先把这些思想给理会啊,给理解清楚。好。那么看完这里的思想之后,我们来画一画流程图啊。画一画流程图。 begin 对应到我们的一个开始,圆角矩形,写好开始二字, 好往下走。第一步输入了 a 和 b 两个不同的变量啊,来表示两个数值。说最开始 画好平行四四边形,写好,输入 a、 b 两个不同变量。那么输入完 a、 b 之后往下走。有 有我们的三个负值过程,负值的话我们之前看到过啊,也讲到过负值怎么来用,是不是用到我们的一个流程图中的一个处理框啊,一个矩形。同时负值用我们的等号来表示了。 好,这是第一步。第二步再来将 b 变量的值复制给 a 变量。好,再下来第三步,将 c 变量的值给到 b 变量。 那么做完这三步就进行了值的一个替换过程。替换完毕再往下走, print 输出,输出我们的 a、 b 此时的两个变量。注意在此时 输出的 a b 变量的值和最开始的输入里面的 a b 变量的值是完全不一样了啊,因为在中间进行了直的互换过程。好,最后走向摁的结束啊,一个圆焦矩形的结束框。 好,那么这样的话就将这道题目我们进行了一个体现啊。所以各位注意怎么来进行值得互换。我们可以理解为一个点,利用到一个临时变量来存储某一个变量值,再来进行值的一个复值过程进行替换。 好,各位下去之后,把这道题自己在你的本子上做一个收集整理。

大家好,我是同龄课堂的诸葛老师,今天来赶快分享一节面试题, radis 淘汰 k 的算法 l r u 与 l f u 的区别啊? 呃,那呃你要搞明白这个问题啊。呃,你要呃看看我们上一个面试题啊,关于那个呃 radis 那个淘汰策略啊,就是内存淘汰策略,他是怎么回事啊?我们这边当时讲了八种策略啊,那其实关于这里面呃像每一种策略的区别,比方说像这两种啊,后面有个 l2u 啊,这个 l f u 包括这种针对过期 k 处理的两种策略也是 l l u l f u 啊,其实他们都是呃针对我们内存 k 淘汰的一些算法, 那 l 二和 l f u 他们之间到底区别什么样?你设置两种车轮还有什么区别?赶快解释一下。就是 l 二 u, 顾名思义嘛,内饰的瑞士能力右射,就最近最少使用 用的 k 我会删掉。那然后还有一个叫 nice 的 frequently you, 就最近最不经常使用的 k 我会删掉。也有我们说的 lfull2u, 他干嘛?他是淘汰掉很久没有被访问数据, 所以他的淘汰标准是以最近一次访问时间作为参考的。那 lfu 他实际上是淘汰最近一段时间被访问次数最少的数据,他是以访问次数作为参考的。 ok, 那这两种算法什么时候呃用哪一种呢?那给大家伙去讲讲。其实我们绝大多数时候我们都应该用 lru 这种策略,这种策略实际上是我们用的最多的, 而且包括这个内存淘汰策略,就我们也推荐那会呃选这种策略就针对过七 k 使用 l r u 的算法,那当然,有的同学说,那 l f u 我什么时候去用呢?是这样的啊,如果说,呃,我们的业 场景里面是有大量的一些热点缓存数据,那我告诉你,针对这种情况,我们用 lfu 可能会更好一点。为什么?给你解释一下啊?就是比方说我们热点缓存大家都知道,那肯定访问次数是比较多的,对不对?那假设我们现在有一个热点缓存的 k, 假设 k 一 他可能在五分钟之前被访问了几百次,假设访问了两百次, ok, 但是最近这五分钟可能暂时,呃,前端没有发过来请求访问他,那假设我们现在还有个 k 二,这个 k 二他可能上一次访问是几分钟之前。 那不巧,在我最近的几分钟,也就最近这五分钟之内有一个请求给他访问了一次, ok, 那大伙思考一下,我们现在说的场景是有大量的就这种热点缓存数据是比较多的,也就呃很多很多缓存他的使用次数,他的使用次数比较多的。但如果说 你用 l2u 这种策略来去淘汰数据的话,那干嘛?那在这种情况下面可能就把 k 一给淘汰掉了。那 k 一是热点缓存啊,可能最近这五分钟确实没有被访问,但可能马上就有很多次的请求要请求到他了, 对不对?那所以你又把它删掉了,那对我们整个性能肯定会有影响。那所以对这种大量大量的这种热点缓存的场景,我们推荐大伙可以 用 l f u, 可能会更好一点。以他的那个访问次数的多少啊为淘汰的依据,可能会更好一点 啊。好,那呃,今天就分享这里,那大伙如果说最近在面试的需要更多面试题的同学啊,我这边给大伙准备了很多很多。那大伙回头如果说想要啊,找一下啊,就可以去一下我们那个视频区的下方评论区获取啊。

缓存有三位清除算法,你是否清楚呢?在实际的开发之中,缓存是提升项目运行技能的重要技术手段,而缓存是一块内存空间,当空间不足的时候,我们就需要将一些无用的数据清除掉。 而面对这些无用数据的驱逐,我们有三类的常用算法,分别是 f i, f o, l u 以及 l f u。 其中啊, f f o 采用先进先出的算法,最早保留的数据会被首先驱逐, 而 lru 会根据最后一次访问时间戳来进行排查。那如果你最后一次访问的时间戳已经非常靠前了,数据就会被清除掉。在 reddis 和 memor catch 中使用的非常多。 还有一种呢,就是 lfu 的算法,是依据访问的频次来决定是否清楚。同时呢,考虑到我们性能问题,在 lfu 中又提供了两种扩展,一种叫天命 lfu, 以 wtonyfu。 这两种扩展主要的目的是为了解决稀疏流量的访问。 当然了,像我们 wtfu 呢,是在我们卡飞印的组建之中,提供了大小区的概念。具体怎么讲呢?我们可以等到我们课程直播的时候,咱们再做进一步的实现分析。

使用简单的自然语言很难准确的表述算法内容,因为自然语言是如此的具有表现力,每个句子都有可能有多重含义,因此提出一种结构化表达方式是个好主意。 人们常常使用流程图和伪代码来描述算法,下面看一个例子。某公司有多名员工,现在需要根据工作时间和时薪来计算某员工的工资。使用流程图表示 算法开始,输入合计工作时间值,输入时薪,计算合计工资等于工作时间乘以时薪,算法结束。 使用不同的形状表示不同的操作。平行四边形是需要交互输入,举行 表示计算,椭圆形表示算法开始和结束。虽然算法通常是从上至下的,但是最好用箭头描述流程方向,这样在更复杂的流程图中能够使算法更清晰。使用伪代码表示 算法开始。输入合计工作时间值,输入时薪,计算合计工资等于工作时间乘以时薪,算法结束。 在伪代码中使用什么关键字并不重要,重要的是统一。最好提出一组固定的关键字来描述对应的步骤的操作。 以上两种表示算法的方法中,伪代码更精确,转换成实际编程语言代码更简单,而流程图转成实际代码要困难, 但是流程图用来表示算法更清晰,适合团队协作交流。在我看来,可行的算法表述方式是使用伪代码。

各位同学,那什么是算法呢?特别在我们今天这个大数据和人工智能这个时代, 大家可能对散发的概念早有耳闻,那是不是我们我们这些相关专业的同学,是如何有一个什么都不知道的人,最后成为了一个大数据的分析师和人工智能的专家的呢? 其实他们都是为了去解决一个具体的问题。那我们我们把算法简单的理解,就是解题的方法和步骤, 那他的目的是解决一个世界问题,我们找到他的思路和途径,找到他的思路和途径。在 计算机来说,在计算机里面去实现一个问题,那我们就是要干什么?用一系列的指令,让计算机去去解决一个实际的问题,这就叫一个算法。 这样的说起来。同学们,其实我们每一天都在写算法,因为每天我们都在解决一个世界问题, 只是解题的简单和复杂,解题的思路和途径以及所使用的方法不同,或者说所使用的工具不同而已。 我们平时在解决问题的时候,使用的是自然语言,使用的是汉字啊,使用的是汉字。那现在呢?我们要使用神, 我们要使用计算机,我们要编程来解决问题,比我们用汉字表达起来要更加复杂一些而已。 那对于算法来说,我们来看一个具体的例子,就是求长方形的面积。同学们,求长方形的面积的方法大家应该知道只有一种,就是长乘宽,长乘宽。那接下来我们要关心的就是他的什么?他的步骤, 把步骤写出来啊,步骤写出来,那就成为算法。我们来看一下用计算机来解决长方形面积。那第一步是接收用户输入的长方形的长度和宽度。 那简单理解输入两个直,这两个直分别代表着长和宽。 由于我们在键盘输入的时候,用户在输入的时候,他所输的速可能是三,也可能是负三。 那我们必须做一个约定,那就说长方形的长度和宽度,他是不能小于等于零的。所以接下来要对两个数进行判断,判断是否都大于零。 如果都大于零,那就说明输入是正确的。我就把两个值相乘,就会得到一个数。 如果其中有一个小雨点的话,那我们就显示输入错误。这里的输入错误就 代表的是也是一种输出,一种输出。告诉用户你的数据是错误的,并给予一个提示,那就是长方形的长和宽都必须大于零。这样的提示。最后显示面积,如果正确的情况下,我们会显示他的面积, 这就是解决一个长方形面积,从计算机来实现他他的一个算法。所以对于玉门同学来说,写算法有难度,但并不是我们解决不了啊。解决不了, 那我们还要注意两三条。注意三条。第一个问题是条条大路通罗马。什么意思呢?那就是同一个问题可以有不同的方法,那不同的方法呢? 就会对应着不同的步骤。不同的方法就会对应不同的步骤。从一个城市的火车站到达一个城市的某一个景点,这中间他的途径 经过的途径肯定是非常多的,那你可以直接打车,打车就可以到达景点。 b 那你可以坐公交车,可能要进行转车, 中途还要转车,当然打车他也有多种途径,可以是传统的出租车,也可以 用现在当下非常流行的网约车。这个就属于什么方法。就首先你要确定你的方法,对于不同的 方法,那决定的自然是不同的步骤。 a 方法 b 方法 c 方法。对应的就是不同的步骤,不同的方法对应不同的步骤,但是结果必须相同, 结果必须相同。那就是最后要到达罗马,你的途径可以商量,步骤可以不同,但是最终结果是一样的。因为我们是解决一个问题,那么这个问题的结果,用户所看到的结果应该是相同的。 这就是算法的含义。那一个正确的算法,他应该拥有五个基本特征,或者说正确的算法,他必须满足这五个特征,分别是有穷性,确定性,可行性,有收入, 还有输出。那这五条中如果有一条不满足的话,就是说这个算法是错误的。为同学们简单解释一下。所谓有穷性,指的是这个算法一定要在 有限的时间内结束, 有限的时间内结束,这个时间可以是一天,可以是一年,但是你一定要有结束的时间。 在后期的编程当中,编程当中,我们在城市设计当中,如果设计的不科学,有问题的话,可能会出现一个死循环的概念,那就是这个 程序的中有一个循环呐,他会永远做下去,不能结束。这就是一种违背了有雄性的特征,那就说明你这个程序写错了,写错了。确定性指的是这个算法他没有霸意性, 就是其中的每一步都是唯一的。而可行性指的是每一步都是可以实现的, 可以实现的。对于计算机来说,我可以使用指令 或者是多条指令去完成它,去实现它,这个算法才说是可行的。那就是不能有空中楼格。一个算法,它应该有输入。那这 的输入呢?要提要提醒同学们,他可以是零个,也可以是大于等于一个,那为什么说是有零个呢?这也要给大家举个简单的例子。有些算法,他的数据是不需要从键盘输入的,比如说从零到九中产生 一个数,代表代表你中奖了,代表一个中奖的号码,那这个中奖号码就不能从键盘输入,而应该让计算机随机产生。那这个时候呢,我们就可以不要输入。 所以笼统的说,一个算法他有输入,这个说法是正确的。但我们不能说任何一个算法,他都必须有一个及以上的输入,那就不对了。最后一个特征就是一个算法他一定 要有输出,输出一定是大于等于一个,因为用户他要看到的是结果。 我们编程人员,我们开发的工程师们,是为用户去实现一个问题,让用户去看到这个结果,看到这个结果,包括我们写算法也是 都是围着用户去看的某一个结果,那代表这个问题解决了。所以我们一般认为一个算法他一定是要有输入的,这就是一个算。

这个视频我主要来介绍一下什么是程序框图,比如这张图就是程序框图,他用一些通用的图形符号来表示算法,这样就将算法的逻辑结构直观的展现了出来。不过这些图形符号又代表啥意思呢?那就让我一一道来。 首先这种图形叫做起指宽,比如这个就表示程序的开始,而这个就表示程序的结束。 其次,这些平均四边形叫做输入输出框,比如这个就表示数据的输入,而这两个就表示结果的输出。接着这个长方形叫做处理框,他表示要给某个变量复职或者做某种运算,比如这个就是要算出堆他的值。 而最后这个菱形叫做判断框,也就是得根据条件进行判断,再选择合适的路径。比如这个就要根据灯塔的值是否 小于零来判断了,如果得到的值小于零,那就往这个方向走,而如果得到的值不小于零,那就往这个方向走。框都说完了,那这些带箭头的线就叫做流程线,表示流程进行的方向。 如果由于排版问题,要把这个框图插开画,那就要在断开的地方画上连接点,并标出连接的号码。了解了这些图形符号代表的意义,那你能说出这个程序图内都有哪些图形符号吗?看,这两个是棋子框,这个平行四边形是输入框,而这两个是输出框, 接着这两个长方形是处理框,最后还剩一个菱形是判断框。怎么样,能认清这些图形符号了吗?如果能,那就快快去刷题试试吧!


算法流程图怎么绘制? 打开电脑浏览器搜索意图图,是绘图软件,这款软件可以绘制各种办公图表,某胡称其为 vco 的国产评价替代。 可以看到支持软件架构图、平面布置图、昂额图、思维导图、组织结构图等。官网点击免费下载运行使用即可。打开一图图示后,点击新建流程图, 可以绘制日常办公所需的各种流程图,小白用户可以直接套用现成图例,点击即打开使用。 界面的左侧是符号库,官方介绍有 260w 价,操作友好。 鼠标拖拽进画布即可使用,也可以鼠标移动至符号上,点击添加光标,快捷添加,双击线条会自动添加,也可以自己添加各种线条,双击符号即可输入文字。 左上一排菜单栏的功能很多,简单看下简贴画还怪可爱的。年终 ppt 来临了,大家都可以用起来。 绘制的图可以点击一键美化功能,懒人辅音,也可以用右侧的工具栏里面的更换主题键。 做完后点击导出,支持的格式有 bng、 pdf、 ppt、 vso 等,如导出图片可以指定导出页面像素、分辨率等。 还可以点击另存为原文件,后面再编辑可以存在电脑本地或者意图云,原文件跨电脑端同步的。想要更多模板的你可以点击模板社区,里面都是实时更新的, 喜欢的图可以收藏或点赞,看中了点击使用此模板就可以, 感兴趣自己来体验吧!


刚才呢我们是看了一下关于这个距离算法 api 怎么使用,那么接下来的话,我们就要看一下关于距离算法具体实现的一个流程是什么样的呢?其实我们在这个 kmbs 中,它是包含两层意思的, k 代表的是我们初始中心点的个数,就是我们要计算整体一个计划的距离数, miss 呢,表示的是我求中心点到其他数据点的一个距离的平均值, miss 平均吗? 那么这样的话,我们就看一下这个 k miss 剧烈是怎么给我一步一步完成的,我把这个呢给大家复制啊贴到这边, 接下来我们看一下整体一个图形的流程。首先第一步,咱们说是随机设置 k 个特征空间内的点作为我的初始的剧烈中心,就比如通过下面这个案例来给大家讲解。我首先呢随机设置了三个点,当成 我的一个初始的距离中心,那好设置完成再过来看。第二步说对于嗯其他的每个点计算到 k 个中心的距离位置的点呢,选择最近的一个距离中心点作为我的标记类别。 这个什么意思?我给大家解释一下,我截个图过来这里边之后呢,我们给大家通过距离来表示,比如说现在呢,我要判断当前这个点属于哪个类别,那我这里边就给他找段,他和这个绿色的点呢,距离大概有这么大,然后他和红色的点呢,距离大概是这么远, 然后他和我们的蓝色点呢,距离是大概这么远,那我们经过比较发现他到我的红色点距离最近,所以说我们认为这个点呢就应该属于红色,然后我们以此类推,把这些所有的点呢都计算和这三个点的距离, 找到最近点的距离,标记相同颜色,这就是我们痘印的里面刚才做的一部手。那么做完之后呢,咱们看第三步是接着对标记的距离中心 计算我们每个距离的一个新中心点,这是我的一个平均值,咱们看到在这块经过我的距离之后呢,所有的点都已经被标记颜色,那我们下一步要做的就是比如说算出这些绿色点的一个中心点是在哪块,算出这个红色的点的中心点在哪块以及蓝色点。 那么算完之后呢,在下一步就需要做比较,怎么比呢?我们看一下,咱们说如果计算得出的新中心点与圆中心点是一样的,也就是说他的至新呢不在移动,那么结束,否则我要重新返回到第二步。那我看一下在这块里面的话,我们把这堆计算平均值排在这里边,和我的 圆中心点一样吗?很明显不一样,反正这个点也是,这个点也是都不一样。那么下来呢,我还是需要返回到咱们的前面来,接着开始再进行计算,然后再进行标记点,再进行我们整体里面的求我的平均点, 这是整体的一个 kimis 聚类时间过程。那么下来的话,我们就通过一个动态图给大家演示一下整体过程。咱们在这里边看到,我们首先开始,然后里面开始聚类一步,然后同时迭代,一步一步走, 那里面的话,慢慢的这一块就变成绿色、蓝色、红色,这是我的整体个动态剧类的一个效果。那么接下来为了让大家理解的更加清楚,我们通过一个案例来进一步熟悉整体一个剧烈流程,在这呢一共是有十五个点,在这十五个点中呢,我们可以看到 我们要进行剧类怎么来完成,就根据前面写的流程一样,首先我们随机设置 k 一个特征空间的点,作为我的初始剧烈中心。那么比如说在这个案例里面,我们设置 p 一 p 二,然后呢根据欧式距离来计算他的一个距离公式, p 一 p 二设置完成,再来计算 p 三到 p 十五的每个点到我七七和二三七的距离。算完之后呢,咱们发现比如 p 三和这边到七七这个点是一点四一到二三六点六点四零,以此标记其他点的距离。 那么算完之后,这样的话,我们再开始给每个点呢进行一个归列,找最近的距离点,然后给他归到箱子里边里面,比如说 p 一这边的话,很明显这个点到他最近,对吧?然后下来开始 p 七也到他最近 p 八,以此类推都是一样,然后 p 二也是找一样找最近的点。 那么我们找完之后呢,接下来对这些标记之后的距离中心,重新计算他的一个新中心点,咱们会发现我计算所有之间点的一个中心点,计算这是七点二,七点三, 然后计算里面 p 二这个中心点这块里面距离成了一点八,四点六。算完之后呢,我们比较 p 一撇和 p 二一撇,发现和这块并没有进行一个重合,所以我现在开始要再一轮的迭代, 那么在一轮题的里面说一就是算距离,给大家进行剧内,然后完成之后呢,再进行算我的中心点,看有没有和这个点中心的整体的一个重合, 那大家想想,我要计算一个点进行重合的话,其实是非常难的,那么我们在这里面一定要有个思想,就是我们每次迭代结果不变的时候呢,就认为是一个算法收敛,但是我 当迭代结果不变,这个呢太理想了,所以我们一般随时限定一个值,比如说在某个预值之下,就是为你满足要求,此时我这 k miss 的迭代就会停下来, 一定注意 k miss 在节能的过程中,他一定是会停下来的,不可能陷入一直选制型的一个过程。那么整体里面就是这一节给大家讲的关于这个剧烈算法的一个实现流程。在这一节中呢,主要给大家讲一下关于这个 k miss 剧烈的实现流程。 那么我们首先是确定长数 k, 然后再选定出示一个距离中心,然后重新计算每个类的一个至心,然后看一下至心呢会不会发生改变,如果会发生改变,我重新抵达,如果不会发生改变,那么此时停止。 那大家需要注意的是,由于我在这里面计算的过程中,大家想每个点都要和我的这种至亲来进行计算,所以说当我的数据级比较大的时候呢,其实我的 kimbi 的剧烈速度是比较慢的,这是咱们给大家讲到的关于这个剧烈算法实现流程这一小节内容。

