数据结构和算法

2020-06-10  本文已影响0人  Zorin

1. 代码运行效率

复杂度

复杂度通常包括 时间复杂度 和 空间复杂度
复杂度的表示方法 O(n) O(2n) O(n²) O(log n);
在具体算法复杂度时需要注意:

降低时间复杂度的方法

算法: 递归,二分法,排序算法,动态规划

降低空间复杂度的方法

数据结构

复杂度降低的核心方法论

降低复杂度的方法的三个步骤:

  1. 暴力解法:在没有任何时间,空间约束下,完成代码任务的开发
  2. 无效操作处理:将代码中的无效计算,无效存储剔除,降低时间或空间复杂度
  3. 空间转移:设计何时数据结构,完成时间复杂度向空间复杂度的转移

4. 如何完成线性表结构下的增删查

线性表的原理,线性表对于数据的增删查操作
线性表结构的每个节点,由数据的数值和指向下一个元素的指针构成
据结构组合方式的不同,除了单向链表以外,还有双向链表,循环链表以及双向循环链表等变形

线性表 的价值在于

数组(顺序) 的价值在于


5. 栈:后进先出的线性表,如何实现增删查

线性表 对数据的顺序非常敏感,而且它对数据的增删操作非常灵活
在有序排列的数据中,可以灵活的执行增删操作
它的灵活性在某种程度上破坏了数据的原始顺序
在某些需要严格遵守数据处理顺序的场景下,就需要对线性表予以限制


6. 队列:先进先出的线性表,如何实现增删查road

队列具有先进先出的特点
在面对数据处理顺序非常敏感的问题时,队列是个不错的选择

  1. 定义

    • 顺序队列:内存空间顺序存储
    • 链式队列:链式结构存储
  2. 时间复杂度

    • 循环队列和链式队列的新增、删除操作都为O(1)
    • 在查找操作中,队列只能通过全局遍历的方式进行,需要O(n)的时间复杂度
  3. 空间性能方面

    • 循环队列必须有一个固定的长度,因此存在存储元素数量和空间的浪费问题
    • 链式队列更为灵活一些
  4. 技术选型

    • 在可以确定队列长度最大值时,建议使用循环队列
    • 无法确定队列长度时,应考虑使用链式队列

7. 数组:如何实现基于索引的查找

上一篇 下一篇

猜你喜欢

热点阅读