十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
程序=数据结构+算法
创新互联从2013年开始,是专业互联网技术服务公司,拥有项目成都做网站、网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元厦门做网站,已为上家服务,为厦门各地企业和个人服务,联系电话:135182197921.数据、数据元素、数据项和数据对象
2.数据结构
3.数据类型和抽象数据类型
4.算法及算法分析
数据结构:如何用数据正确地描述现实世界的问题,并存入计算机
算法:如何高效地处理这些数据,以解决实际问题
1.数据、数据元素、数据项和数据对象(1)数据(Data):是客观事物的符号表示,是所有能输入计算机中并能够被计算机程序处理的符号的总称。如:整数、实数、字符、字符串及多媒体程序处理的图形、图像、声音及动画等通过特殊编码定义后的数据。
(2)数据元素(Data Element):是数据的基本单位,数据元素用于完整地描述一个对象,如图中的一个顶点,树中棋盘的一个状态。
(3)数据项(Data Item):是组成数据元素的、有独立含义的、不可分割的最小单位。如:学生表中的学生姓名,学号等都是数据项。
(4)数据对象(Data Object):是性质相同的数据元素的集合,是数据的一个子集。如:C={‘A’,‘B’,‘C’,‘a’,‘b’,‘c’}。
2.数据结构含义:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。换句话说,数据结构是带“结构”的数据元素的集合,“结构”指数据元素之间存在的关系。数据结构包括逻辑结构和存储结构。
(1)逻辑结构:数据结构的逻辑结构有两个要素:一是数据元素;二是关系,关系是指数据元素间的逻辑关系。根据数据元素之间关系的不同特性,数据的逻辑结构通常有:
下面4种结构中所举的示例是以某班级学生作为数据对象(数据元素是学生的学籍档案记录),来分别考察数据元素之间的关系。
其中,集合结构、树结构、图结构或网状结构都属于非线性结构。
线性结构:线性表、栈和队列、字符串、数组、广义表;
非线性结构:树结构(树和二叉树),图结构(无向图和有向图),集合结构。
(2)存储结构:数据对象在计算机中的存储结构表示称为数据的存储结构,也称为物理结构。数据的存储结构分为:
若采用顺序存储结构,则各个元素在物理上必须是连续的;若采用非顺序存储结构,则各个元素在物理上可是是离散的。
数据的存储结构会影响存储空间分配的方便程度。
数据的存储结构会影响对数据运算的速度。
(3)数据运算:施加于数据的操作。如对一张表格的查找、增加、修改、删除记录的工作。运算不仅仅是加减乘除,还包括算法。算法的实现是与数据的存储结构密切相关的。
运算的定义是针对逻辑结构的,指出运算的功能;运算的实现是针对存储结构的,指出运算的具体操作步骤。
3.数据类型和抽象数据类型(1)数据类型:是一个值的集合和定义在此集合上的一组操作的总称。
(2)抽象数据类型(ADT):一般指用户定义的、表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称,具体包括3个部分:数据对象、数据对象上关系的集合以及对数据对象的基本操作的集合。
定义一个抽象数据类型就是在“定义”一种数据结构;确定了抽象数据类型的存储结构,才能“实现”这种数据结构。
4.算法及算法分析(1)算法的定义:为解决某类问题而规定的一个有限长的操作序列。(换一种说法则是对特定问题求解步骤的一种描述)例如:要解决的问题是做番茄炒蛋,食材则是数据结构,步骤则为算法。
(2)算法的特性:
算法可以没有输入但一定要有输出。
(3)“好”算法的特性:
(4)时间复杂度O(f(n))
衡量算法效率的方法有事后统计法和事前分析估算法(常用)
问题规模:不考虑计算机的软硬件等环境因素,影响算法时间代价的最主要因素是问题的规模。
语句频度:一条语句重复执行的次数
一个算法的执行时间大致上等于其所有语句执行时间的总和,而语句的执行时间则为该条语句的重复执行次数和执行一次所需时间的乘积。
常见的时间复杂度按数量级递增排队一次为:
如何计算步骤:
例:1:常量阶示例
{
x++;
s=0;
}
两条语句频度均为 1,算法的执行时间是一个与问题规模 n 无关的常数,所以算法的时间复杂度为T(n)= O(1),称为常量阶。
实际上,如果算法的执行时间不随问题规模n的增长而增长,算法中语句频度就是某个常数。即使这个常数再大,算法的时间复杂度都是O(1)。例如,对上面的程序进行如下改动:
for(i=0;i<10000;i++)
{
x++;
s=0;
}
算法的时间复杂度仍然为O(1)。
例2:线性阶示例
for(i=0;i
循环体内两条基本语句的频度均为n)=n,所以算法的时间复杂度为T)= O),称为线性阶
例3:平方阶示例
x=0;y=0;
for(k=1;k<=n;k++)
x++;
for(i=l;i<=n;i++)
for(j=1;j<=n;j++)
y++;
对循环语句只需考虑循环体中语句的执行次数,以上程序段中频度大的语句是(6),其频度为(n)=n^2,所以该算法的时间复杂度为T(n)= O(n^2),称为平方阶。
例4:立方阶示例
x=1;
for(i=l;i<=n;i++)
for(j=l;j<=i;j++)
for(k=1;k<=j;k++)
x++;
则该算法的时间复杂度为T(n)= 0(n^3),称为立方阶
例5:对数阶示例
for(i=1;i<=n;i=i*2)
{
x++;
s=0;
}
算法的时间复杂度为T(n)= O(log2^n),称为对数阶。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧