![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 79
LyndonZheng
字节跳动某小游戏工作室后端程序
墨麟龙骑战歌服务端程序员
展开
-
快速排序算法
//核心思路://1. 取数组第一个元素作为基准值(iKey),执行一趟排序,让基准值左边的值都比基准值小,右边的值都比基准值大。然后递归重复执行。//2. 先从右边开始,查找比基准值小的数,替换掉基准值所在的位置(a[i]),操作一次;再从左边开始,查找比基准值大的数,替换掉刚才右边查找的值(a[j])。然后再从右边查找比基准值小的数,替换a[i],如此不断重复,直至i >= ...原创 2018-11-19 14:31:52 · 175 阅读 · 0 评论 -
有价值资料索引
一、语言1. C++2. lua2.1tolua++ 参考手册中文版https://blog.csdn.net/zgl390963305/article/details/799488793. python3.1 一堆python面试题https://blog.csdn.net/weixin_41666747/article/details/799428473.2...原创 2019-07-25 11:30:29 · 187 阅读 · 0 评论 -
极客讲堂 - 数据结构与算法之美 笔记七 - 算法实战:redis、搜索引擎、高性能队列Disruptor、微服务接口鉴权限流
52 | 算法实战(一):剖析 Redis 数据类型对应的数据结构1.Redis 是一种键值(Key-Value)数据库。相对于关系型数据库(比如 MySQL),Redis 也被叫作非关系型数据库。2.Redis 中,键的数据类型是字符串,值的类型有字符串、列表、字典、集合、有序集合。2.1列表 对应两种实现方法:一种是压缩列表(ziplist),另一种是双向循环链...原创 2019-01-27 14:38:37 · 517 阅读 · 1 评论 -
极客讲堂 - 数据结构与算法之美 - 位图,概率统计,向量空间,B+树,A*搜索,数据库索引,并行算法
45 | 位图:如何实现网页爬虫中的URL去重功能?1. 简单粗暴思路:通过URL的hash值来判断去重。2. 遇到的问题:10 亿个 URL 构建成散列表,需要的内存有可能超过100G。3. 解决方案:布隆过滤器。(1) 原理: 10亿个URL的散列值,值范围在1-1亿之间。布隆过滤器用一亿个bit来标识这1亿个值。 因为存在散列冲突,所以 bit为1就u...转载 2019-01-26 17:42:01 · 547 阅读 · 0 评论 -
极客讲堂 - 数据结构与算法之美 - 回溯算法,初识动态规划,动态规划理论,动态规划实战,拓扑排序,最短路径
39 | 回溯算法1.实际上一个类似枚举的搜索尝试过程。按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择。2.回溯算法非常适合用递归代码实现3.实现的过程中,剪枝操作是提高回溯效率的一种技巧 (不符合条件的就抛弃掉)40 | 初识动态规划1. 0-1背包问题,用回溯算法的话时间复杂度是O(2^n),n是物品个数。...原创 2019-01-25 18:31:34 · 414 阅读 · 0 评论 -
链表中环的检测
一、查找是否存在环1. 定义两个快慢指针 pFast 和 pSlow,pFast 每次走两步,pSlow 每次走一步。 如果 pFast 在循环遍历后为 null,则链表中不存在环。 如果 pFast 和 pSlow 相遇则链表中存在环。2.为什么 pFast 和 pSlow 会相遇呢? 假设存在环,那么快指针与慢指针 终究会进入同一个环中,那么必定会形成...转载 2019-01-23 18:19:23 · 359 阅读 · 0 评论 -
极客讲堂 - 数据结构与算法之美 - 深度和广度优先搜索,字符串匹配基础,Trie树,AC自动机,贪心算法,分治算法
31 | 深度和广度优先搜索1. 基于数据结构“图”的搜索算法,比较简单的有 深度优先 和 广度优先 搜索算法。适用于图不大的情况。2. 广度优先用 队列来实现。逐层遍历,每遍历一个结点,就放入队列。3. 深度优先用 栈 来实现。通过堆栈,一层一层递归下去。4.深度优先和广度优先搜索的时间复杂度都是 O(E),空间复杂度是 O(V)。 E: 图结构里的边的数目。...原创 2019-01-17 14:36:34 · 518 阅读 · 0 评论 -
极客讲堂 - 数据结构与算法之美 - 哈希算法,二叉树基础,红黑树,递归树,堆和堆排序,堆的应用,图的表示
21 | 哈希算法(上):如何防止数据库中的用户信息被脱库?1.哈希算法要满足什么条件?(1)从哈希值不能反向推导出原始数据(2)原始数据只修改了一个 Bit,最后得到的哈希值也不相同(3)散列冲突的概率要很小(4)哈希算法的执行效率要尽量高效,针对较长的文本,也能快速地计算出哈希值。2. 哈希算法的七个应用(1)安全加密,比如: MD5 消息摘要...原创 2018-12-29 19:46:19 · 1309 阅读 · 1 评论 -
极客讲堂 - 数据结构与算法之美 - 排序,线性排序,排序优化,二分查找,跳表,散列表
11 | 排序(上)1. 三种排序法比较 是否原地排序 是否稳定 最好 最坏 平均 冒泡排序 是 是 O(n) O(n平方) O(n平方) ...原创 2018-12-11 16:22:15 · 289 阅读 · 1 评论 -
极客讲堂 - 数据结构与算法之美 - 复杂度分析,数组,链表,栈,队列,递归
03 | 复杂度分析(上)1. 复杂度O(n)表示的是单位代码执行时间T(n) 随数据规模n增长的变化趋势2.分时间复杂度和空间复杂度(表示存储空间大小)3.常见的复杂度并不多,从低阶到高阶有:O(1)、O(n)、O(nlogn)、O(n2 )4. 有两个增长数据时,如果是嵌套关系,就是O(m*n),是并列关系时,就是O(m+n)04 | 复杂度分析(下)1. 时...原创 2018-12-04 17:43:03 · 373 阅读 · 0 评论 -
TopK问题
从arr[1, n]这n个数中,找出最大的k个数,这就是经典的TopK问题https://mp.weixin.qq.com/s/FFsvWXiaZK96PtUg-mmtEw 全局排序,O(n*lg(n)) 局部排序,只排序TopK个数,O(n*k) 堆,TopK个数也不排序了,O(n*lg(k)) 分治法,每个分支“都要”递归,例如:快速排序,O(n*lg(...转载 2018-11-19 20:10:31 · 601 阅读 · 0 评论 -
算法复杂度
for循环的时间复杂度往往是O(n) 树的高度的时间复杂度往往是O(lg(n)) 二分查找的时间复杂度是O(lg(n)) 快速排序的时间复杂度n*(lg(n)) 原文:https://mp.weixin.qq.com/s/yfzrFYn0Dogy0HkN5XAS0Q...原创 2018-11-19 18:26:08 · 136 阅读 · 0 评论 -
编程之美 -- 算法案例一
一、判断点是否在三角形内1. 方法1:通过计算面积的方法 比如三角形三定点是A,B,C, 判断点D是否在三角形ABC内。 那么根据海伦公式,计算三角形ABD、ACD、BCD的面积之和,是否大于三角形ABC。大于的话D点就在三角形ABC外,等于的话就在内。 海伦公式:p=(a+b+c)/2, 面积S=sqrt[p(p-a)(p-b)(p-c)]2. 方法2...原创 2019-09-16 11:58:11 · 299 阅读 · 0 评论