堆 图 字符串匹配算法(查找算法)
堆:Heap 一种树。1.完全二叉树;2.任意结点值大于等于(小于等于)子树的任意结点
堆的分类:1.大顶堆:结点值大于等于子树任意结点;2.小顶堆:结点值小于等于子树任意结点。
堆的存储:数组 父结点i 左子结点 2*i 右子结点 2*i+1
堆的实现:data(数组) size count
堆中插入元素:堆化操作:从下往上,从上往下
1.插入底部;2.堆化操作,调换(当前结点和父结点),直到满足
2.删除堆顶元素
堆 时间复杂度:o(logn)
堆排序时间复杂度:o(nlogn) 原地排序
堆排序:1.建堆(1.堆化处理;2.数据交换);2.建堆操作
图:非线性表数据结构
顶点:图中元素 边:顶点和顶点的关系 度:几条边
图分类:有向图 无向图 (从边的方向来看)
入度:多少边指向这个顶点 出度:多少边从这个顶点出发
带权图:边的权重
应用:微信 QQ
图的存储方式:
1.邻接矩阵存储图(二维数组),适用于稠密的图
2.邻接表存储图(顶点(一维数组),边指向关系(链表))类似散列表
图的应用:搜索算法
深度优先搜索算法DFS:回溯思想,走不通再回来改变
广度优先搜索算法BFS:地毯式 队列queue:存储被访问的顶点;visited:1,0;prev:
采用邻接表存储无向图
图中顶点个数
邻接表 链表类型的数组 数组顶点信息,链表边的信息
字符串匹配算法:单模式 多模式
单模式:BF算法:暴风算法,朴素匹配算法,蛮力算法
模式匹配:主串中查找子串的一个定位过程
子串(模式串 bc)
主串(目标串 a b c d)
字符数组CharArray
单模式:RK算法:引入了哈希算法
RK算法:子串求哈希 主串依次求哈希 不需移动字符 处理哈希冲突问题