什么是数据结构和算法

什么是数据结构

数据结构没有一个准确的定义。

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

数据结构是数据对象,以及存在于该对象的实例和组成实 例的数据元素之间的各种联系。 ——《数据结构、算法与应用》

数据结构的逻辑结构有四种:

  • 集合
  • 线性结构
  • 树形结构
  • 图形结构

采用什么结构由数据的类型和数量决定,采用正确的结构才存储数据,才能有更高的效率。

什么是算法

算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。 ——百度百科

算法的好坏决定了解决问题的效率,而算法的好坏又是由它的复杂度决定的。
算法的复杂度

  • 时间复杂度 T(n)
  • 空间复杂度 S(n)

时间复杂度一般情况下只考虑乘法与除法,同时时间复杂度又有最坏情况复杂度(Tworst(n))和平均复杂度(Tavg(n))。
Tavg(n) <= Tworst(n) 一般情况下我们讨论时间复杂度都只考虑最坏情况复杂度,平均复杂度的计算太过于繁琐。

在一段代码里,若是有多个算法存在,则有这样的计算方式
T1(n)=O(f1(n)),T2(n)=O(f2(n))

  • T1(n)+T2(n)=max(T1(n),T2(n))
    要是两段算法是并列关系,则由时间复杂度最大的算法决定上限
  • T1(n)xT2(n)=O(f1(n)xf2(n)))
    要是两段算法是嵌套关系,则时间复杂度为两段算法的时间复杂度的乘积

一些常见的结构复杂度的计算

  • 若T(n)是关于n的k阶多项式,那么T(n)=Θ(n^k)
  • for循环的时间复杂度等于循环次数乘以循环体代码的复杂度

  • if-else结构的复杂度取决于if的条件判断复杂度和两个分枝部分的复杂度,总体复杂度取三者最大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值