算法
算法的定义: 独立存在的一种解决问题的方法和思想
- 输入 : 算法具有0个或者多个输入
- 输出: 算法至少有一个或多个输出
- 有穷性: 算法在规定的时间内执行有限的步骤,不会无限循环
- 确定性: 算法中的每一步都有确定的含义,不会出现二义性
- 可行性: 算法的每一步都是可行的,算法的每一步能够执行有限的次数完成
算法的定义: 算法是程序实现优化性能的一种思想
数据结构: 程序在实现过程中,实现数据的一种数据储存方式,是算法实现的一种载体
python 内置了一些数据结构: 列表 和元组 (分离式顺序表) 字典和集合底层实现的是散列表
字典不可变类型和无序的原因是 因为底层实现了hash()方法: 实现可哈希的对象才能作为字典的键 散列表需要空留三分之一的位置进行空留,在存放数据时会进行空间扩容处理,原有的数据就会随机进行获取索引,进行存储
字典的时间复杂度数据的增删改查时: 都是O(1) 在进行字典的copy 和 可迭代的时候时: O(n)
大致的数据结构的构成: 顺序表 链表 栈 队列 排序与搜索 (一维空间的数据结构)
在排序中必要掌握的是快速排序 思想: 通过定义一个数作为一个基准值,通过判断剩下的数进行与基准值进行比较 小于基准值的数放在左边 大于基准值的数放在右边
然后进行判断左边数进行拆分成单独的进行比较,右边也进行相同的操作
时间复杂度 : 最优时间复杂度 O(nlogn) 最坏时间复杂度O(n^2) 不稳定
栈: 先进后出 队列: 先进先出
树与二叉树是属于数据结构二维空间
广度优先查找(层级查找)
深度优先查找: 先序遍历 : 通过 根 左 右 进行遍历
中序遍历 : 通过 左 跟 右 进行遍历
后序遍历 : 通过 左 右 跟 进行遍历
反推: 可以通过 中序排列 和(先序排列 或者后序排列 ) 两两进行排列顺序 ,可以推导出二叉树状结构