随笔分类 -  Algorithm

摘要:哈希表 哈希表是基于数组的, 可以理解为, 给定一个 Key (Key是可进行计算映射的任意值), 利用某个函数的计算将 Key 映射成某个值. (这个值大几率是唯一值) 3点设计散列函数的基本要求 1. 2. 如果 key1 = key2 那么 hash(key1) = hash(key2) 3. 阅读全文
posted @ 2018-12-19 21:23 `Laimic 阅读(168) 评论(0) 推荐(0)
摘要:堆 (二叉堆) 简介: 堆是特殊的一种树, 是一颗近似?完全二叉树 一般来说是用顺序结构进行存储 (二叉树是使用链表来进行存储的) 二叉堆分为大顶堆和小顶堆 定义 1. 是一颗完全二叉树 2. 堆中的任何一个父节点的值都大于(小于)或等于它左右孩子的节点值 操作 插入 删除 构建 参考链接: htt 阅读全文
posted @ 2018-10-16 21:17 `Laimic 阅读(250) 评论(0) 推荐(0)
摘要:二叉搜索树 ( 二叉排序树 ) 特性: 1. 左子树比根节点小, 右子树比根节点大 2. 不存在相同值得节点 3. 查找一个值的效率相当于二分查找法 添加节点 1. 插入节点 node, 从根部开始 不断跟当前节点进行比较, 如果大于当前节点, 则继续遍历右子树, 否则便利左子树 2. 直到碰见空节 阅读全文
posted @ 2018-10-04 20:55 `Laimic 阅读(115) 评论(0) 推荐(0)
摘要:参考链接: http://blog.51cto.com/9291927/2083190 http://www.cnblogs.com/polly333/p/4740355.html 树形结构 插入 遍历 繁茂度: 一棵树, 每一层的 层数和该层节点数量的乘积之和叫做该层的繁茂度 测试代码: 线性结构 阅读全文
posted @ 2018-09-26 14:02 `Laimic 阅读(207) 评论(0) 推荐(0)
摘要:模式匹配: 对于两个串 S1, S2. 问 S1 中是否包含 S2 以及其位置. 朴素模式匹配 从 S1, S2 开始. 刚开始, 令 i = 0 匹配 S2[0] 和 S1[0] 如果匹配成功, 则匹配 S2[1] 和 S1[1] 如果匹配失败, 则 S1[i++] 直到匹配完成和匹配失败 时间复 阅读全文
posted @ 2018-08-21 23:47 `Laimic 阅读(150) 评论(0) 推荐(0)
摘要:测试代码 冒泡排序 图解: 冒泡排序的优化 - 鸡尾酒排序 此算法与冒泡排序的不同处在于从低到高然后从高到低 选择排序 解释: 多次从头遍历到末尾, 每一趟都记下该趟中最小(最大)的元素 此处可以每一趟同时记下最大最小元素, 将其同时对调 速度应该是快2倍 将最小的元素换到指定位置 图解: 插入排序 阅读全文
posted @ 2018-05-15 11:08 `Laimic 阅读(273) 评论(0) 推荐(0)
摘要:题型: 大量数据, 快速修改某一元素并且能求其中某一段和 原理: 修改某一元素时, 利用快速二分修改与其相关的数据, 也利用二分来进行快速求和 如图, 按照二分来进行求和 C8 = C4 + (C6 + (C7 + C8)) 也按照二分来进行修改数据 C1 -> C2 -> C4 -> C8 实现: 阅读全文
posted @ 2016-12-27 10:03 `Laimic 阅读(147) 评论(0) 推荐(0)
摘要:问题描述: 并查集是树形的数据结构 用于解决相交集合的合并和查询问题 并查集的相关函数 实现方法 每个集合用一个有根树来表示 建立一个数组, 每个元素的值就是该下标所代表的父级元素. 优化 将深度小的树合并到深度大的树 路径压缩: 每次查找元素时将元素都直接指向其根元素. 另整个集合的高度趋向于1. 阅读全文
posted @ 2016-12-23 15:03 `Laimic 阅读(126) 评论(0) 推荐(0)
摘要:盲目性搜索 深度优先搜索: 介绍: 深度为优先考虑的搜索方式 框架: 扩展: 剪枝优化 备忘录优化 广度优先搜索: 介绍: 以广度为优先考虑的搜索方式 框架: 扩展: 路径状态的保存 双向广度优先搜索 介绍: 从终点和起点一起进行广度优先搜索 框架: 启发性搜索: AStar 搜索: 介绍: 根据曼 阅读全文
posted @ 2016-04-26 21:44 `Laimic 阅读(221) 评论(0) 推荐(0)