精华内容
下载资源
问答
  • 怎样表示一个算法

    千次阅读 2019-11-11 09:39:15
    为了表示一个算法,可以采用不同的方法,常用的方法有: ① 用自然语言表示算法 ② 流程图表示算法 ③ 用伪代码表示算法 ④ 用计算机语言表示算法 ...

    为了表示一个算法,可以采用不同的方法,常用的方法有:

    ① 用自然语言表示算法

    ② 流程图表示算法

    ③ 用伪代码表示算法

    ④ 用计算机语言表示算法

     

    展开全文
  • 2.5 怎样表示一个算法 为了表示一个算法,可以用不同的方法。常用的方法由:自然语言、传统流程图、结构化流程图和伪代码等。 2.5.1 用自然语言表示算法 自然语言就是人们日常使用的语言,可以是汉语、英语或其他...

    2.5 怎样表示一个算法

    为了表示一个算法,可以用不同的方法。常用的方法由:自然语言、传统流程图、结构化流程图和伪代码等。

    2.5.1 用自然语言表示算法

    • 自然语言就是人们日常使用的语言,可以是汉语、英语或其他语言。
    • 用自然语言表示通俗易懂,但文字冗长,容易出现歧义。自然语言表示的含义往往不大严格,要根据上下文才能判断其正确含义。
    • 用自然语言来描述包含分支和循环的算法不大方便。因此,除了那些很简单的问题以外,一般不用自然语言表示算法。

    2.5.2 用流程图表示算法

    • 流程图是用一些图框来表示各种操作。用图形表示算法,直观形象,易于理解。
      在这里插入图片描述

    2.5.3 三种基本结构和改进的流程图

    1.传统流程图的弊端

    传统的流程图用流程线指出各框的执行顺序,对流程线的使用没有严格限制。因此,使用者可以不受限制地使流程随意地转来转去,使流程图变得毫无规律,阅读时要花很大精力去追踪流程,使人难以理解算法的逻辑。

    2.三种基本结构
    在这里插入图片描述
    以上 3 种基本结构,有以下共同特点:

    1. 只有一个入口。
    2. 只有一个出口。
    3. 结构内的每一部分都有机会被执行到。
    4. 结构内不存在 “死循环”。

    2.5.4 用 N-S 流程图表示算法

    在这里插入图片描述

    2.5.5 用伪代码表示算法

    • 伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。
    • 它如同一篇文章一样,自上而下地写下来。每一行(或几行)表示一个基本操作。
    • 它不用图形符号,因此书写方便,格式紧凑,修改方便,容易看懂,也便于向计算机语言算法(即程序)过渡。

    2.5.6 用计算机语言表示算法

    • 要完成一项工作,包括设计算法和实现算法两个部分。设计算法的目的是为了实现算法。因此,不仅要考虑如何设计一个算法,也要考虑如何实现一个算法。
    • 我们考虑的是用计算机解题,也就是要用计算机实现算法,而计算机是无法识别流程图和伪代码的,只有用计算机语言编写的程序才能被计算机执行,因此在用流程图或伪代码描述一个算法后,还要将它转换成计算机语言程序。
    • 用计算机语言表示的算法是计算机能够执行的算法。用计算机语言表示算法必须严格遵循所用的语言的语法规则,这是和伪代码不同的。

    2.6 结构化程序设计方法

    结构化程序设计方法的基本思路是:把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。

    采取以下方法来保证得到结构化的程序:

    1. 自顶向下
    2. 逐步细化
    3. 模块化设计
    4. 结构化编码

    在这里插入图片描述

    展开全文
  • 2.4.1 and 2.4.2章 怎样表示一个算法 1 用自然语言表示 就是我们正在沟通的语言 ,你看到的我的笔记就是自然语言,但是自然语言文字冗长,容易出现歧义性。因此不推荐自然语言表达 2流程图表示 ...

    1 用自然语言表示

    就是我们正在沟通的语言 ,你看到的我的笔记就是自然语言,但是自然语言文字冗长,容易出现歧义性。因此不推荐自然语言表达

    2流程图表示

    美国国家标准化协会ANSI(American National Standard Institute)规定了一些常用的流程图符号:

    人的脑力是有限的,有时画出流程图思路会清晰很多。

     引用别人说的话;

    •流程图是表示算法的较好的工具。一个流程图包括以下几部分 :

    (1)表示相应操作的框;

    (2)带箭头的流程线;

    (3)框内外必要的文字说明。

     

    posted on 2013-07-11 21:53 taoyuan7788 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/taoyuan7788/p/3185082.html

    展开全文
  • 一个伪随机数生成算法

    千次阅读 2011-02-12 14:49:00
    一个伪随机数生成算法 这几天逛程序员论坛,发现了不少好帖子,增长了不少知识,现拿其中一则为例说明。 某人提出一个问题,说怎么样能生成一亿个不重复的随机数呢? 问题表述起来很简单,似乎...

    一个伪随机数生成算法

    这几天逛程序员论坛,发现了不少好帖子,增长了不少知识,现拿其中一则为例说明。

    某人提出一个问题,说怎么样能生成一亿个不重复的随机数呢?

    问题表述起来很简单,似乎只要弄明白什么叫随机数以及怎样用电脑生成随机数,就能解决问题了。这俩问题大多数程序员都会,我在这里再表述一番。

    随机数,个人理解为一定范围内出现的毫无规律的数,比如扔一个骰子,落在桌面上时朝上的一面所表示的数就是随机数,这个数只能是从1到6这个范围内的数,但是具体是什么数,谁也不能肯定,因为它没有规律。一组不重复的随机数,对扔骰子来说就是扔出六个不一样的数来,再比如洗一次扑克牌,洗完了之后就是54张不重复的随机数。

    第二个问题,怎么样用电脑生成随机数,只要调用某个语言的某个函数就行了。其实电脑是没办法生成一个真正的随机数的,因为电脑是高度有规律的机器,让它生成一个没规律的数,根本办不到。平时程序员用某个函数生成的随机数只是利用某个算法弄出来的伪随机数。看起来像,其实不是。能解决问题就行了。

    回到这个帖子所描述的问题上来,生成一亿个不重复的随机数。那么最直接的算法就是每用函数生成一个数,就把它放在一个筐里,第一个数直接放到筐里,以后生成的数在放到筐里之前和筐里的每一个数比较一番,一旦发现筐里有和新生成的数一样的数时,丢掉这个新生成的数,再接着生成数。

    毫无疑问,这种算法的效率是非常低的,看看其中的比较数的次数就知道了,最差的次数趋于无穷次。也就是说到后来,我几乎生成不了和以往不同的数。

    当然还可以将这个算法升级为效率高得多的算法,每生成一个数,就把这个数从随机数生成器取的范围中去掉,比如我要生成10个随机数,第一次生成了一个3,我就把3从随机数的范围中去掉,第二次只从1到9这个范围内找。3对应4,4对应5……9对应10。这样就不存在比较这个环节了,然而又多出一个对应的环节,每生成一个数之后就要把剩下的数重新对应一遍,效率也不容乐观。

    目前以我为代表的普通程序员的想象力也就到此为止了,想不出什么高级解决办法了,就当扔了一块砖头出来。下面就把真正的碧玉,一个数学家级程序员的算法,请出来。

    我们先用另一种眼光来看不重复的随机数:加密。把一个能看懂的英文字符串打乱字母的顺序,变成不可读的,这就是加密。但是必须得有规律地打乱,字母a对应另外一个固定的字母Ax,字母b对应另外一个固定的字母Bx,以此类推,而且必须是一一对应的。那么字符串“ab……z”这26个字母对应的26个加密字母“AxBx……Zx”就可以看成是对应范围az的不重复的伪随机数,这就是数学家的算法的来源。

    看看回帖者的原文:

    可以采用32bit RSA算法

    A2~(N-1)
    C=
    A EXP D)  mod N
    满足如下条件:

    D
    是素数,N是两个素数(P,Q)之积,

    (D * E) mod ((P-1) * (Q-1))=1
    因为:若

    C=(A EXP D)mod N
    有:

    A=(C EXP E) mod N
    所以,CA 一一对应。

    所以,对于A=2~(N-1),有不重复,无遗漏的伪随机码C。

    凡是稍微扯上一点数学,尤其是高等数学的问题,我等泛泛之辈看起来就有点费劲,这里虽然文字不长,但是还得慢慢来看。

    这里面RSA算法是密码学三大算法之一(RSAMD5DES),是一种不对称密码算法。说如果满足条件:D是素数,N是两个素数(P,Q)之积,(D * E) mod ((P-1) * (Q-1))=1,那么存在C与A(范围从2到N-1)一一对应,且C=(A EXP D)mod N。A是一个有顺序的数,C就是一个看似无规律的伪随机数。Mod运算表示求模,例如7Mod3=1。意思是7除以3余1。类似地8Mod3=2,9Mod3=0EXP表示前面数的后面数次方,AEXPD表示A的D次方。这两个运算清楚了,其它的也就没什么困难的了,*是乘法的意思,大多数理科生都清楚。

    搜了一下网络,还得加上一些条件,1,P和Q不能一样。2,e<(-1)(-1)e与(P-1(-1)的最大公因数为1。

    下面用一个例子来试验一下,看看这个算法有多神奇。

    设N=15,P=5,Q=3,则A为2到14的数。现在要产生2到14的伪随机数。取D为3,E为3,C2=(2EXP3)mod15 = 8,

    C3=(3EXP3)mod 15 = 12,

    C4  (4EXP3)mod 15= 4,

    C5  (5EXP3)mod 15= 5,

    C6  (6EXP3)mod 15= 6,

    C7   (7EXP3)mod 15= 13,

    C8  (8EXP3)mod 15= 2,

    C9  (9EXP3)mod 15= 9,

    C10  (10EXP3)mod 15= 10,

    C11  (11EXP3)mod 15= 11,

    C12  (12EXP3)mod 15= 3,

    C13  (13EXP3)mod 15= 7,

    C14  (14EXP3)mod 15= 14。

    比较完美。如果数再大一点,可能看起来更随机一些。

    由这个算法产生的1亿的伪随机数,效率那可是相当的高,只不过运算时要用到大数运算库。在一些讲求效率的场合应用的话,再做一些对应上的处理,升级一下算法,那定是相当的完美。

    由此可以看出,算法的优化,如果仅仅停留在大脑能够想象到的小学数学的阶段,那是远远达不到要求的。一个优秀的程序员,还需要加深对离散数学的理解,虽然,这次提到的算法已经深入到了数论的层次上了,但是RSA算法已经是应用非常广泛的算法了,对其稍加变通,便可以发挥出更加不可思议的作用。程序员还是需要多学习算法,多学习数学,才能发挥出超出一般程序员的不可思议的能力。

    展开全文
  • 一、区域填充概念区域:指已经表示成点阵形式的填充图形,是象素的...1、区域有两种表示形式1)内点表示:枚举出区域内部的所有象素,内部所有象素着同一个颜色,边界像素着与内部象素不同的颜色。2)边界表示:枚举出...
  • 旺财还面临的一个问题是:村北和村南的药店相隔甚远,而且两地之间还有一个规定凡是4条腿或4个轮子的东西经过都要交钱的收费站,作为一条精通算法的小狗,旺财始终把"提高效率减小耗费"作为自己的座右铭.他在想要怎样...
  • )求某数的因子数 合数的质因数分解法:任何合数都可以表示成质数的指数幂乘积的形式,如果将质数从小到大排列,那么这分解数唯一的。 例如: 那么怎样求呢: 文字表示就是,正约数个个数等于幂指数...
  • 最近浏览“程序员论坛”时发现不少好帖,增长了不少知识,现拿其中一... 随机数,个人理解为一定范围内出现的毫无规律的数,比如扔一个骰子,落在桌面上时朝上的一面所表示的数就是随机数,这个数只能在1到6的范围内,
  • 在上一篇中,我们已经从一个例子中学会了HMM的前向算法,解决了HMM算法的第一个问题,即模型评估问题。这一讲中我们来解决第二个问题:HMM的解码问题,即即给定观测序列 O=O1O2O3…Ot和模型参数λ=(A,B,π),怎样...
  • 最近浏览“程序员论坛”时发现不少好帖,增长了不少知识,现拿其中一... 随机数,个人理解为一定范围内出现的毫无规律的数,比如扔一个骰子,落在桌面上时朝上的一面所表示的数就是随机数,这个数只能在1到6的范围内,
  • 最近浏览“程序员论坛”时发现不少好帖,增长了不少... 随机数,个人理解为一定范围内出现的毫无规律的数,比如扔一个骰子,落在桌面上时朝上的一面所表示的数就是随机数,这个数只能在1到6的范围内,但具体是什么...
  • 现在,我们要面对的大整数将远远超出标准数据类型所能表示的范围,因此需要解决的第一个问题就是怎样在计算机中表示大整数。 回想一下大整数的十进制表示。比如20080512这个数在十进制中表示为: 。 受此思想...
  • 每组数据第一行输入一个n(n )(表示想不出来一开始有的钱数)和一个m(m )(表示接下来有m组兑换关系) 接下来有m组数据a , b , c。 0, b , 0 ; 输入过程中当a或b为0时表示为钱; 注意:输入中没给出的兑换关系...
  • 算法的基本结构;一算法框图 程序框图流程图;起止框;设计算法,求一元二次方程ax2+bx+c=0a0,b2-4ac>0的根,画出相应的流程图 ;输入系数a,b,c;探 究;开始;设计算法,求一元二次方程ax2+bx+c=0 的根,...小结怎样表示一个算法
  • 试题 算法提高 成绩排名资源限制时间限制:1.0s 内存限制:256.0MB问题描述小明...接下来N行,每行有一个字符串和一个正整数,分别表示人名和对应的成绩,用一个空格分隔。输出格式输出一共有N行,每行一个字符串,...
  • 为了达到目标,程序员需要结合计算机的特性,用程序来表示现实世界中对问题的处理步骤,这过程就称为算法算法是程序设计的“熟语”学会编程语言和学习外语很像。为了将自己的想法完整地传达给对方,仅仅死记硬...
  • 程序的灵魂算法程序设计概述算法怎样表示一个算法小结参考书目及网络资源讨论时间程序的灵魂算法程序设计概述算法怎样表示一个算法小结参考书目及网络资源讨论时间程序设计概述Niklaus E. Wirth(1934-
  • 你会学习第一个搜索算法(二分查找); 你学习怎样描述算法的运行时间(大O表示法); 你会学到设计算法的常见工具(递归) …………………………………………………………………………………………………… ...
  • Atitit 算法的理解 目录1. 算法(Algorithm),是程序的灵魂 12. 2. 算法的图形化表示 23. 3. 算法在实际软件开发项目中的应用 34. 算法的特点: 44.1.... 有一个或多个输出。 44.5. 5. 有效性。 45. 怎样...
  • 教学目的使学生了解算法的概念掌握算法的特性懂得怎样表示一个算法以及结构化程序设计的方法;2.1 算法的概念; 数据结构十算法=程序 实际上一个程序除了以上两个主要要素之外还应当采用结构化程序设计方法进行程序...
  • 思想:採用基于层序遍历的方法。用level扫描各层节点,若某一层的节点出队后。rear指向该层中最右节点。...这是由于第一层仅仅有一个节点,它就是最右节点。对于其它层。上一层最右节点最后进队的孩子...
  • PAGE / NUMPAGES 第一课时 程序框图顺序结构 预习课本P69 预习课本P69思考并完成...) 1程序框图 (1)定义 程序框图又称流程图是一种用程序框流程线及文字说明来表示算法的图形 (2)表示 在程序框图中算法一个步骤通常用
  • 题目: 输入一个整数,求该整数的二进制表达中有多少个1。 例如输入10,由于其二进制表示为1010,有两个1,因此输出2。   ...这是一道很基本的考查位运算的面试题。...现在的问题变成怎样判断一个整数的
  • 第二章 主要内容 2.1 算法的概念 2.2 简单算法举例 2.3 算法的特性 2.4 怎样表示一个算法 2.5 程序化设计方法 一个程序应包括两个方面的内容: 对数据的描述数据结构(data structure) 对操作的描述算法(algorithm) ...
  • DBSCAN算法

    2019-12-04 10:04:27
    DBSCAN算法是密度聚类算法,所谓密度聚类算法就是说这个算法是,根据样本的紧密程度来进行聚类。下面来介绍一些DBSCAN中的概念。 要根据样本中的数据密度进行聚类,首先定义样本中数据密度大的地方应该怎样表示,很...
  • 求出一个矩阵A对应的行列式在第i,j(i表示行,j表示列)位置的余子式(余子式前面乘以-1^(i+j)即得代数余子式);2.根据代数余子式求得矩阵A行列式的值。(行列式展开法);3.根据代数余子式和行列式的值求出伴...
  • 算法系列:求幂算法

    2014-08-07 21:06:50
    一个很有名的对一个数求幂的算法,也就是说,求一个数x的n次方或者这样简单表示:x^n。Donald Knuth在TAOCP的4.63节 求幂值中提出这个算法。 这个算法很简单的实现就是x乘以自己n次,但是在这里当然会提供一种...
  • 掌握结构化程序设计的方法 C语言程序设计 程序设计的灵魂算法 一算法的概念 二简单算法举例 三算法的特性 四怎样表示一个算法 五结构化程序设计方法 六本章小结 C语言程序设计 程序设计的灵魂算法 一算 法 的 概 念...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 485
精华内容 194
关键字:

怎样表示一个算法