数据结构的学习

什么是数据结构

数据结构:1是构成集合的数据元素,2是数据元素之间存在的关系,(结构是指数据元素之间的关系)。

数据结构研究什么

数据结构可以定义为一个二元组:Data_Structure=(D,R)

D是数据元素的有限集合,R是D上关系的有限集合。

数据结构具体的应包括三个方面:数据的逻辑结构,数据的存储结构和数据的运算集合。

1.逻辑结构

1.集合结构。结构中的数据元素之间的关系除了同属于一个集合的关系外,无任何其他关系。

2.线性结构。元素之间一对一的线性关系。

3.树形结构。元素之间一对多的层次关系。

4.图状结构或网状结构。数据元素之间存在着多对多的关系。

2.存储结构

存储结构(物理结构)逻辑结构在计算机中的存储映像,逻辑结构在计算机中的实现(存储表示)。它包括数据元素之间的表示和关系的表示。存储结构是逻辑结构的映像与元素本身的映像,逻辑结构是抽象,存储结构是实现,二者综合起来建立了数据元素之间的结构关系。数据元素之间的关系在计算机中有两种不同的表示方法,即顺序存储结构(顺序映像)与非顺序存储结构(非顺序映像)。数据结构在计算机中的映像,包括数据元素映像和关系映像。关系映像在计算机中可用顺序存储结构或非顺序存储结构来表示。

1. 3. 1 算法及算法的描述


算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。算法具有下列5个重要特性。
(1)有穷性。一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成。
(2)确定性。算法中每一条指令必须有确切的含义,不能产生二义性。在任何条件
下,算法只有唯一的一条执行路径,即对于相同的输入只能得出相同的输出。
(3)可行性。一个算法是可行的,即算法中描述的操作可通过已经实现的基本运算执行有限次来实现。
(4)输入。一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。(5)输出。一个算法有一个或多个输出。这些输出是与输入有着一定关系的量。

2.算法的时间复杂度
一个算法的执行时间大致上等于其所有语句执行时间的总和,语句的执行时间是指该条语句的执行次数和执行一次所需时间的乘积。语句执行一次实际所需的具体时间是与机器的软、硬件环境(机器速度、编译程序质量和输入数据等)密切相关的,与算法设计的好坏无关。所以,可以用算法中语句的执行次数来度量一个算法的效率。
首先定义算法中一条语句的语句频度。语句频度是指语句在一个算法中重复执行的次数。以下给出了两个nxn阶矩阵相乘算法中的各条语句,以及每条语句的语句频度。
语句                          语句频度

for (i=0;i <n;i++)        n+1
for (j=0;j <n;j++)        n(n+1)   

c [i] [j]=0;                   n^2
for (k=0;k <n;k++)    n^2*(n+1)
c [i] [j]=c[i][j]+a[i][k]*b[k][j];  n^3     

算法中所有语句的总执行次数为Tn=2n^3+3n^2+2n+1,从中可以看出,语句总的执行次数是问题的规模(矩阵的阶)n的函数f(n)(Tn=f(n))进一步化简,可用Tn表达式中n 的最高次幂,即最高次幂项忽略其系数来度量算法执行时间的数量级,称为算法的时间复杂度,记做:

T (n) =O (f (n) )
以上算法的时间复杂度为T (n) =O (n^3) .算法中所有语句的总执行次数Tn是问题规模n的函数,即Tn=f(n),其中n的最高次幂项与算法中称为原操作的语句的频度对应,原操作是实现算法基本运算的操作,上面算法中的原操作是实现。c [i] [j]=c[i][j]+a[i][k]*b[k][j],一般情况下,原操作由最深层循环内的语句实现。T(n)随n的增大而增大,增长得越慢,其算法的时间复杂度越低。下列3个程序段中分别给出了原操作couunt++的3个不同数量级的时间复杂度。
(1) coun++;

其时间复杂度为O(1),称为常数阶复杂度。

(2)for (i=1;i <=n;i++)
count++;其时间复杂度为O(n),是线性时间复杂度。

(3)for (j=1;j <=n;j++)

count++;

其时间复杂度为O(n^2),是平方阶时间复杂度。

(1)i=1;

while(i<n)

 i =2*i;

该程序段的时间复杂度O(log2(n-1))

(2)for(i=0;i<n;i++)

for(j=0;j<m;j++)

a[i][j]=0;

该程序段的时间复杂度为O(n*m)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值