算法
汐客SeaKr
这个作者很懒,什么都没留下…
展开
-
GC的三大高级算法
GC的三大高级算法https://segmentfault.com/a/1190000004674180转载 2020-09-02 16:54:02 · 142 阅读 · 0 评论 -
GC的三大基础算法
基本术语1. 垃圾(Garbage) 就是需要回收的对象。作为编写程序的人,是可以做出“这个对象已经不再需要了”这样的判断,但计算机是做不到的。因此,如果程序(通过某个变量等等)可能会直接或间接地引用一个对象,那么这个对象就被视为“存活”;与之相反,已经引用不到的对象被视为“死亡”。将这些“死亡”对象找出来,然后作为垃圾进行回收,这就是GC的本质。2、根(Root) 就是判断对象是否可被引用的起始点。至于哪里才是根,不同的语言和编译器都有不同的规定,但基本...转载 2020-09-02 16:34:12 · 513 阅读 · 0 评论 -
四叉树 - 碰撞检测算法 Lua版
1、工具方法深拷贝clone与类方法class-- 深拷贝 保护原数据function clone(object) local lookup_table = {} local function _copy(object) if type(object) ~= "table" then return object elseif lookup_table[object] then return looku原创 2020-07-15 20:44:34 · 1025 阅读 · 0 评论 -
哈希及其应用(字典,加密等)
一、名词说明Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。哈希:指压缩映射的转换过...原创 2019-12-19 10:47:39 · 468 阅读 · 0 评论 -
归并排序(分治法)- lua实现
归并排序归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。(1)稳定性归并排序是一种稳定的排序。(2)时间复杂度对长度为n的文件,需进行趟二路归并,每趟归并的时间为O...原创 2019-11-18 15:05:01 · 716 阅读 · 0 评论 -
双指针算法技巧的「滑动窗口」框架
题目案例:最小覆盖子串 - lua实现找到字符串中所有字母异位词 - lua实现无重复字符的最长子串 - lua实现滑动窗口算法思路:1、我们在字符串 S 中使用双指针中的左右指针技巧,初始化 left = right = 0,把索引闭区间 [left, right] 称为一个「窗口」。2、我们先不断地增加 right 指针扩大窗口 [left, right],直到窗口中的...原创 2019-11-19 17:48:28 · 390 阅读 · 0 评论 -
算法思想简总
一、分治法:分解,求解,合并Divide-and-Conquer分治算法常用的实现方法是递归。因为分治就是将大问题不断划分成小问题,递归的解决小问题,再合并小问题的解就可以得到问题的解。问题有:(1)二分搜索(2)大整数乘法(3)Strassen矩阵乘法(4)棋盘覆盖(5)合并排序(6)快速排序(7)线性时间选择(8)最接近点对问题(9)循环赛...转载 2019-12-03 12:09:26 · 149 阅读 · 0 评论