zoukankan      html  css  js  c++  java
  • 算法解读:s变量和数组

    算法是解决问题并获得结果的过程。在这个处理过程中,问题以数据的形式输入,结果同样以数据的形式输出,在算法的处理过程中,也需要各种临时的数据。

    数据是什么?

    数据是多种不同信息的表现。

    以料理中的食谱为例,下面的材料即为算法——食谱的数据:

      猪肉120g, 洋葱1/2个, 胡萝卜1/2个, 土豆2个, 糖一大勺, 料酒2大勺……

    计算机程序中的算法也是如此,为了解决问题需要使用各种数据:

    1. 求最大公约数的算法:

      a. 求最大公约数的两个整数
      b. 求出的最大公约数(整数)

    2. 一组数据的排序算法:

      a. 要排序的一组数据
      b. 数据的个数
      c. 排好序的一组结果数据

    在一个算法的思考过程中,我们需要很多信息,所有这些信息都是数据,都会协助问题解决的流程。因此,所有的算法是”处理“和”数据“的相互结合。

    数据类型的理解

    数据代表各种信息,被视为信息的数据有很多类型,根据不同种类分为不同的组,如食谱数据的分组:

      配料:猪肉、牛肉、洋葱、白菜
      调味品:酱油、料酒、糖、盐
      量:100g, 200ml, 1勺
      时间:时、分、秒
      火候:大火、中火、小火

    计算机编程的算法中需要处理的数据也分为不同的组,这样的分组就称为数据类型:

      整数型:0, 1, 100, -100
      浮点型:1.1, 3.1415926, - 2.98
      字符型:A, B, x, 我, 你
      字符串型:ABC, CHINA, 算法
      布尔型:true, false

    值的理解

    数据是各种信息的表现形式,而数据的具体表现就是值。

    在烹饪的食谱中, 猪肉、酱油、胡椒等是在做料理时使用的配料和调味料,也可以说是表示”物“的”值“。而100g, 1小勺,200ml等式表示分量,时间等”数“的”值“。

    在算法中,我们用数值、文字等描述”值“, 如整数型或浮点型的值:0, 1, 1.1, 3.14。字符型和字符串的值,一般用单引号或双引号括起字符或字符串:'A', 'B', "CHINA".

    括起来表示是为了与一般的数值区别开,比如: 10 和 "10",这两个分别是整数型值和字符串的值。

    变量的理解

    在算法中,当我们对一些数据进行操作时,需要保存这些数据的空间,这些空间称为”变量“。比如,我们做文件整理的时候,需要把所有文件分类到不同的盒子里进行管理,在这里,文件就是数据,存放文件的盒子就是所谓的变量。也就是说,变量起到了盒子的作用,我们可以移动各种数据并存入盒子里。

    在这里需要注意一点,在整理文件时,我们可以把多个种类的文件放入一个盒子里,但变量,一般情况下,只能存入一种类型的数据。同时,在已经存入数据的变量中输入另一个值时,原先存入的数据将消失。比如声明一个变量: int i; 此时,盒子已经搬出来了,但盒子里没有任何数据,接着我们设定: i = 2; 于是数据2被存入了盒子 i 里,我们可以继续设定 i 的值: i = 3; 此时,3存入了盒子里,而数据2已经消失了。

    值得一提的是,在我们声明一个变量 int i;这个步骤中,i 的状态是不放入任何数据。

    变量的区分

    算法中,我们经常使用多个变量,为了区分不同的变量并方便认识变量的用途,我们需要使用变量名来为装数据的箱子取名。

    变量名要唯一。

    赋值语句

    变量的值的代入是通过变量指定的赋值语句完成的,赋值语句的右边也可以是使用运算符号的公式,如:i = 10; j = 3 + 5;

    赋值语句右边可能是个变量名,此时的变量名代表存储在此变量中的值,如 j = i + 5; 这里的变量名 i 表示存储在变量 i 中的值,如果 i = 3,那么j = i + 5就相当于 j = 3 + 5;

    数组

    算法中,数组用来保存大量数据。例如:存储全校学生的测试结果(分数), 或者所有注册会员的名字等。

    数组的原则:同一数组中的所有数据必须是同类型的值。

    数组的理解:它是把很多变量线性排列的结果,即,数组是变量的箱子"无缝隙"地排列在一条直线上。

    与变量有变量名作为标记一样,数组也有数组名,数组名是指定某一个目标数组而给定的唯一名称。

    构成数组的”箱子“的个数称为数组元素数,可以用编号进行管理,且编号默认从0开始。

    二维数组

    数组中存储大量的关联数据。其中,在一条直线上排列的,像储物柜的数组称为一维数组,另外,也有把变量像纵向和横向无缝隙排列的矩形数组,它称为二维数组。甚至还有向水平、垂直、深度三个方向无缝隙排列的立方体数组,称为三维数组……

    二维数组被广泛地使用在行和列的大量数据的管理中,如:围棋游戏中黑白子的管理

    如果每一层的房间数排列一样,那么,由N层组成的宾馆房间构造也可以认为是二维数组。

    总之,二维数组必须是由变量的”箱子“无缝隙地排列成长方形的结果:

    字符串

    在算法中,字符和字符串的处理是比较特殊的。

    对于字符,计算机内部是通过数字(或字符编码)表示的。例如:字符'A'为65, 字符 'B' 为66...

    字符串是上述字符编码对应的字符连续的表现,因此,字符串是字符无缝隙线性排列的信息,或者可以定义为:字符串是每个元素存储字符的字符型数组,例如:字符串"ABC",可以看成是存储字符'A', 'B', 'C'的数组。

    作者:Ribbon 出处: http://www.cnblogs.com/Ribbon/ 本文版权归作者和博客园共有,欢迎转载。未经作者同意下,必须在文章页面明显标出原文链接及作者,否则保留追究法律责任的权利。 如果您认为这篇文章还不错或者有所收获,可以点击右下角的【推荐】按钮,因为你的支持是我继续写作,分享的最大动力!
  • 相关阅读:
    ora-01847:月份中日的值必须介于 1 和当月最后一日之间
    (转)ORACLE中关于外键缺少索引的探讨和总结
    (转) Oracle性能优化-读懂执行计划
    shutdown immediate 持久无法关闭数据库之解决方案
    Oracle11g adump目录下面.aud增长导致空间撑满无法删除导致CRS无法启动的解决方法
    linux几种常见的文件内容查找和替换命令
    unzip解压3G或者4G以上文件失败的解决方法
    IMP-00058: ORACLE error 1882 encountered
    AIX文件系统/var空间100%的问题
    html5手机网站需要加的那些meta/link标签,html5 meta全解(转)
  • 原文地址:https://www.cnblogs.com/Ribbon/p/4519550.html
Copyright © 2011-2022 走看看