结构
广义:数据结构=数据存储+算法
狭义:数据结构=数据的存储
使用数据结构
1.程序员编程的依据
2.有效管理数据对象
3.解决处理性能问题(例如数据查询时采用有效算法)
概念:
数据
数据元素(记录数据的基本单位:数据表中的一个字段就算是数据的一个元素)
数据项()
数据对象
数据结构
数据结构:数据元素相互之间的关系
1.逻辑结构:反应数据元素之间的逻辑关系
存储结构:数据结构在计算机中的表示
算法:对数据的操作
集合:由一个或多个确定的元素所构成的整体叫做集合。
(一维数组)
线性结构:如果不是第一个或者最后一个元素,每一个元素都拥有一个前驱一个后继
线性表:类型相同的元素
线性表的衍生结构
栈:操作受到限制的,只能操作栈顶,入栈出栈,lifo 后入先出
用途:解决括号匹配检查,浏览器从栈顶弹一个处理啊,或编辑器的undo功能
队列:只能从队尾入队,从队首出队,只能操作队首队尾,fifo先入先出
用途:消息队列,视频弹幕,维护打印机任务
串:字符串 连续表,需要结束标记,操作成批字符串
物理结构: 顺序表(知道表的长度),链表(双向链表,双向链表)
树状结构:节点之间没有回路,每两个点之间都有且只有一条路,一棵树有N-1条边,
树的遍历:
先序遍历(深度优先)
终须遍历(深度优先)
后序遍历(深度优先)
层序遍历(广度优先)
树的衍生
无序树
有序树
二叉树
完全二叉树(就是叶子节点都必须在最后一层或者倒数第二层,而且必须在左边。任何一个节点都不能没有左子树却有右子树。)
满二叉树:如果一棵树的高度为 k,且拥有 2^k-1 个节点,则称之为 满二叉树。(每个节点要么必须有两棵子树,要么没有子树。)
霍夫曼树
图状结构:节点之间形成多个回路
由顶点的集合(不能是空集)和变得集合组成的结构,表现的是多对多的关系
顶点,边,权(路径带数字),有向图于无向图
内存与存储结构
一般用16进制表示内存的地址
引用:对指针进行了封装(一般见于高级语言中,例如js)
内存的以原理与构造:
存储结构:链式存储 顺序存储
指针:存储地址的变量,指针不是地址
算法:用数学描述
分类:
排序算法
查找算法
推荐算法
贪心算法:用最少的最好的办法解决当前的问题
特征:
有穷性:算法必须能在执行有限个步骤之后终止
确切性:每一步骤必须有确切的定义
输入项:有0个或多个输入,用来规定初始情况
输出项:有一个或者多个输出,没有输出的算法毫无意义
可行性:每个步骤都是可以被分解为可执行的操作步,每一个计算步都可以在有限时间内完成(也称为有效性)
算法优劣判断依据:
时间复杂度
空间复杂度
正确性
可读性
健壮性
十大算法:
快速排序算法:
堆排序算法
归并排序
二分查找
线性查找
深度优先
广度优先
戴克斯特拉
动态规划
贝叶斯分类算法
常用算法说明:
基本算法:排序与查找,分配与调度
应用算法:压缩与加密
底层实现:操作系统,通信,渲染。。。
商业算法:人工智能与商业智能,各种行业算法
关于排序:
n:排序元素个数
关于查找:
分块查找
散列表
顺序查找
二分查找
数据挖掘相关算法:
分裂与聚类
关联与因果
决策树
稳定的排序算法:对一组数据多次排序,排序结果均相同
冒泡排序:稳定的排序算法,
分块查找:
压缩算法:霍夫曼树
一个字节 = 8beta
加密算法:对称加密算法,非对称加密算法