数据机构与算法

01.数据结构:逻辑结构和物理结构。
其中逻辑结构是面向问题的,
而物理结构是面向计算机的,
它们的基本目标都是将数据及其逻辑关系存储到计算机内存中。

02.逻辑结构:是指数据对象中数据元素之间的相互关系。分为四种:集合结构、线性结构、树形结构和图形结构。

03.物理(存储)结构:是指数据的逻辑结构在计算机中的存储形式。数据的存储结构应正确反映数据元素之间的逻辑关系,这是关键。
数据元素的存储结构:1.顺序存储结构和2.链式存储结构。
1.顺序存储结构:把数据元素放在地址连续的存储单元中,数据间的逻辑关系和物理关系一致。如,数组。
2.链式存储结构:把数据元素放在任意的存储单元中,数据间使用指针关联。
数据元素的存储关系不能反映其逻辑关系。如,链表。

04.算法:解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。

05.算法的基本特性:
输入,算法具有零个或多个输入,
输出,至少有一个或多个输出。
有穷性,算法在执行有限步后能够自动结束,不会出现无限循环。
确定性,算法的每一步都具有确定的含义,不会出现二义性。
可行性,算法的每一步都能够通过执行有限次操作完成。

06.算法复杂度:时间复杂度和空间复杂度。
时间复杂度:执行算法所需要的计算工作量
空间复杂度:执行这个算法所需要的内存空间

07.时间复杂度:算法的时间复杂度反映了算法执行的时间长短,它是度量一个算法好坏的重要指标。
度量一个算法的时间复杂度通常采用“大O表示法”

08.时间复杂度的几条基本计算规则:

  1. 基本操作,即只有常数项,认为其时间复杂度为O(1)
  2. 顺序结构,时间复杂度按加法进行计算
  3. 循环结构,时间复杂度按乘法进行计算
  4. 分支结构,时间复杂度取最大值
  5. 判断一个算法的效率时,往往只需要关注操作数量的最高次项,其它次要项和常数项可以忽略
  6. 在没有特殊说明时,我们所分析的算法的时间复杂度都是指最坏时间复杂度
    常见时间复杂度
    执行次数函数举例 阶 非正式术语
    12 O(1) 常数阶
    2n+3 O(n) 线性阶
    3n2+2n+1 O(2n) 平方阶
    5log2n+20 O(logn) 对数阶
    2n+3nlog2n+19 O(nlogn) nlogn阶
    6n3+2n2+3n+4 O(n3) 立方阶
    2n O(2n) 指数阶

常见的时间复杂度之间的关系
所消耗的时间从小到大
O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3) < O(2n) < O(n!) < O(nn)

list内置类型的时间复杂度
Operation Big-OEfficiency
indexx[] O(1)
Index assignment O(1)
append O(1)
pop() O(1)
pop(i) O(n)
Insert(i,item) O(n)
del operator O(n)
iteration O(n)
contains(in) O(n)
get slice[x:y] O(k)
del slice O(n)
set slice O(n+k)
reverse O(n)
concatenate O(k)
sort O(n log n)
multiply O(nk)

dict 内置类型的时间复杂度

Operation Big-OEfficiency
copy O(n)
get item O(1)
set item O(1)
delete item O(1)
contains(in) O(1)
iteration O(n)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值