第三部分—数据结构与算法基础_1. 数据结构理论

本文介绍了数据结构的基本概念,强调数据是计算机可操作的对象,包括数值和非数值类型。数据结构是组织数据的方式,对运行效率和存储有直接影响。算法则是解决问题的步骤,与数据结构密切相关。文章还探讨了算法的特性,如输入输出、有穷性、确定性和可行性,并简单分类了数据结构的逻辑结构和物理结构。
摘要由CSDN通过智能技术生成

1.1数据

数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据不仅仅包括整型、实型等数值类型,还包括字符及声音、图像、视频等非数值类型。

1.2数据结构概念

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。

数据结构是计算机存储、组织数据的方式。是相互之间存在一种或多种特定关系的数据元素集合。

 1.3算法的概念

算法是特定问题求解步骤的描述,在计算机中表现为指令的有限序列,算法是独立存在的一种解决问题的方法和思想。对于算法而言,语言并不重要,重要的是思想。

1.3.1算法和数据结构区别

数据结构只是静态的描述了数据元素之间的关系,高效的程序需要在数据结构的基础上设计和选择算法。

  1. 算法是为了解决实际问题而设计的。
  2. 数据结构是算法需要处理的问题载体
  3. 数据结构与算法相辅相成

 

1.3.2 算法的比较

现在我们需要写一个求1 + 2 + 3 + … + 100的结果程序,你应该怎么写呢?

大多数人马上回写出下面C语言代码(或者其他语言)

int  i ,sum = 0; n = 100;
for(int i = 1 ;i <= n;i++)
{
	sum = sum + i;
}
printf(“ %d ” , sum);

当然,如果这个问题让高斯来去做,他可能会写如下代码:

int sum = 0 ,n = 100;
sum = ( 1 + n) * n / 2
printf(“%d”,sum)

很显然,不论是从人类还是计算机的角度来看,下列的算法效率会高出很多,这就是一个好的算法会让你的程序更加的高效。

1.3.3 算法的特性

算法具有五个基本的特性:输入输出有穷性确定性可行性

输入输出:算法具有零个或多个输入、至少有一个或多个输出。

有穷性:指算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成。

确定性:算法的每一步骤都有确定的含义,不会出现二义性。

可行性:算法的每一步都必须是可行的,也就是说,每一步都能通过执行有限次数完成。

1.4 数据结构分类

按照视点的不同,我们把数据结构分为逻辑结构物理结构。

1.4.1逻辑结构

1.4.1.1集合结构:集合结构中的数据元素除了同属于一个集合外,他们之间没有其他关系。各个数据元素是平等的。他们共同属于同一个集合,数据结构中的集合关系类似于数学中的集合,如下图所示。

1.4.1.2线性结构:线性结构中的数据元素之间是一对一的关系。如图:

 1.4.1.3树形结构:树形结构中是数据元素之间存在一种一对多的层次关系,如图:

 

 1.4.1.4 图形结构: 图形结构的数据元素是多对多的关系,如果:

 

​​​​​​​1.4.2物理结构

说完了逻辑结构,再说下物理结构,也有的书称为存储结构。

物理结构:是指数据的逻辑结构在计算机中的存储形式,共分为两种:顺序存储和链式存储。

​​​​​​​1.4.2.1顺序存储:是把数据元素存放在地址连续的存储单元里,其数据的逻辑关系和物理关系是一致的,如图:

1.4.2.2链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。数据元素的存储关系并不能反映其逻辑关系,因此需要用一个指针存放数据元素的地址,这样通过地址就可以找到相关数据的位置。如图:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值