【408数据结构】概述

什么是数据结构

程序 = 数据结构 + 算法
算法是求解问题的步骤

算法的特性

有穷性

必须要在固定的步骤内解决问题,死循环不算作算法

确定性
可行性

必须要能够通过计算机代码实现,同时还需要具有输入和输出

输入取自于某个特定的对象的集合

输出是与输入相关联的量

算法好不好?

正确性

一个算法应当可以正确的解决问题

可读性
健壮性

对于非法数据可以做出反应

高效率与低存储需求

低时间复杂度&空间复杂度

时间复杂度

O用来表示数量级,我们在考虑时间表达式的时候只考虑最高项

两个时间复杂度相加,我们只保留最高的一项

两个时间复杂度相乘,结果就是相乘

O ( 1 ) < O ( l o g 2 n ) < O ( n ) < O ( n l o g 2 n ) < O ( n 2 ) < O ( n 3 ) < O ( 2 n ) < O ( n ! ) < O ( n n ) O(1)<O(log_2n)<O(n)<O(nlog_2n)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n) O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)

真正影响时间复杂度的量级由循环结构体决定

对于数组,要考虑最优情况的时间复杂度和最坏情况的时间复杂度

空间复杂度

内存需求包括:代码本身占用的空间,使用的数据

用S表示空间复杂度,当为S(1)时,被称为原地工作

空间复杂度主要由变量所决定,同时也只取最高阶

特殊情况:递归

每一层所占用的数据内存*递归次数

空间复杂度=变量阶数(如一维数组)*递归次数,同时数据长度可能也会改变

  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值