今天总结一下数据结构与算法的小知识~
著名计算机科学家沃思提出一个公式:
程序=数据结构+算法
先看个思维导图:
1
数据结构
1.概念
数据:数据是对客观事物的符号表示,在计算机中指所有能输入到计算机中并能被计算机程序处理的符号的总称,是计算机程序加工的“原料”。
数据元素:是数据的基本单位,一个数据元素由若干个数据项组成。在计算机程序中通常作为一个整体进行考虑和处理。
数据项:数据项是数据的不可分割的最小单位。
数据对象:是性质相同的数据元素的集合,是数据的一个子集。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。数据元素之间的关系称为结构。
(另外数据结构在计算机科学中还是一门综合性的专业基础课程。是介于数学、计算机硬件、计算机软件三者之间的一门核心课程。)
组成数据结构的三个要素有:数据逻辑结构、物理结构、数据的操作。
数据的逻辑结构:数据元素之间的逻辑结构,是结构的“关系”描述,逻辑结构有4种:集合、线性结构、树形结构、图状结构或网状结构。
集合:结构中的数据元素之间除了“同属于一个集合”的关系外,别无其他的关系。
线性结构:结构中的数据元素之间存在一对一的关系。
树形结构:结构中的数据元素之间存在一对多的关系。
网状结构:结构中的数据元素之间存在多对多的关系。
物理结构:又称存储结构,是数据结构在计算机中的表示。数据的存储结构有两种存储方式:顺序存储结构和链式存储结构。
数据的操作可以理解为数据元素可以对其进行一系列的操作的集合,例如可以对数据元素进行插入、删除、修改等操作。
2.实例:
例如九九乘法表,我们可以将每个乘式看作一个元素:1*1=1;5*5=25;都是一个数据元素。
每个数字看作是一个数据项。
数据对象看作是:两个在1~9之间的正整数乘积公式所组成的一个集合。
逻辑数据结构是4种结构中的集合结构。
2
算法
算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。算法是一个程序的灵魂。算法是解决“做什么”和”怎么做”的问题。广义的讲为解决一个问题而采取的方法和步骤,就称为算法。
对同一个问题可以有不同的解题方法和步骤,例如求1*2*3*4*5的积,我们可以按次序依次相乘,也可以按倒序依次相乘,我们也可以先算2乘5再乘3乘4乘1,打乱顺序算。这就是不同的算法。
一个算法有5个特点:
有穷性,一个算法应该包含有限的操作步骤,而不能是无限的。
确定性:算法的每一个步骤都应当是确定的,而不应当是含糊的、模棱两可的。
可行性:一个算法是能够有效执行的,即所有的操作都是可以通过已经实现的基本运算的有限次来实现的。
输入:一个算法有一个或多个的输入。
输出:一个算法有一个或多个的输出。
算法的表示方法:可以用自然语言或者流程图的方式来表示。
例如:判断2000年到2500年的每一个年份是否是闰年的算法流程图可以这么表示:
3
写个简单的小程序
用C语言写个99乘法表:
#include <stdio.h> int main(){ int lim,row,cos,p,q; while(1){ printf(“请输入1-9的数字(输入0退出):”); scanf(“%d”,&lim); if(lim==0){ break; } else if(lim>0&&lim<10){ q=1;} else{ q=0;} if(q){ for (row=1;row<=lim;row++){ for(cos=1;cos<=row;cos++){ p=row*cos; printf(“%d*%d=%d “,cos,row,p); } printf(“\n”); } } } return 0; }程序编写完后,到文件目录下就可以看到exe的可执行程序文件:
今天就到这里吧~~~