- 博客(8)
- 收藏
- 关注
原创 深广度优先遍历
深度优先搜索深度优先搜索,是图论中的经典算法。其利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。游戏中的应用:游戏中可以用来做寻路算法,以为深度优先遍历不一定是最短路径,所以最好还是用A*算法去做寻路步骤://简称为DFS(depth first search)//流程:沿着一条路走到底,如果走不通,退回到上一个节点继续走下一个方向。、//步骤:vector(用顺序表存储路径)//1.将起点存入路径中//2.递归流程(
2020-08-21 15:35:30
350
原创 lua闭包函数
**闭包函数**概念通过调用含有一个内部函数加上该外部函数持有的外部局部变量(upvalue)的外部函数(就是工厂)产生的一个实例函数闭包组成外部函数+外部函数创建的upvalue+内部函数(闭包函数)function test() local Test=0 return function()--//尾调用 Test =Test + 1 return Test end end c1=
2020-08-21 15:17:27
386
原创 lua里面Table的底层实现
Table特点容器功能:与其他语言相似,lua也内置了容器功能,也就是table。而与其他语言不同的是,lua内置容器只有table。正因为如此,为了适配不同的应用需求,table的内部结构也比较考究,分为了数组和哈希表两个部分,根据不同需求来决定使用哪个部分。面向对象功能:与其他语言不同的时,lua并没有把面向对象的功能以语法的形式包装给开发者。但是我们可以用table 完成一个类似与面相对象的操作。Table的数据结构1.Table结构体table是存放在GCObject里的。结构如下:t
2020-08-21 14:51:23
2080
原创 lua的GC原理
**目录GC的原理及其算法设计Lua垃圾回收中的三种颜色GC的数据结构Lua垃圾回收详细过程步骤详解GC的原理及其算法设计**不同的语言,对GC算法的设计不同,常见的GC算法是引用计数和Mark-Sweep算法, c#采用的是Mark-sweep && compact算法, Lua采用的是Mark-sweep算法,分开说一下:引用计数算法:在一个对象被引用的情况下,将其引用计数加1,反之则减1,如果计数值为0,则在GC的时候回收,这个算法有个问题就是循环引用。Mark-sweep
2020-08-21 14:20:01
2038
原创 一个初学者对希尔排序的理解
希尔排序(1)希尔排序(shell sort)这个排序方法又称为缩小增量排序,是1959年D·L·Shell提出来的。该方法的基本思想是:设待排序元素序列有n个元素,首先取一个整数increment(小于n)作为间隔将全部元素分为increment个子序列,所有距离为increment的元素放在同一个子序列中,在每一个子序列中分别实行直接插入排序。然后缩小间隔increment,重复上述子序列划分和排序工作。直到最后取increment=1,将所有元素放在同一个子序列中排序为止。(2)由于开始时,inc
2020-08-20 11:20:33
274
原创 游戏中的算法
分治算法1、分治算法的定义 分治算法是游戏中比较常用的一种算法,“分治”二字顾名思义,就是“分而治之”的意思,说的通俗一点就是步步为营,各个击破,再来解释分而治之的意思,其实也就是把一个问题(一般来说这个问题都是比较复杂的)分成两个相同或者相似的子问题,再把子问题分成更小的问题,一直这样下去.......直到最后,子问题可以简单地求解,还有一点就是把所有求得的子问题合并就是原问题的解。其实在很多场合下都会使用到分治算法,比如说我们常用的归并排序、快速排序都是很常见的分治思想的体现。...
2020-08-17 16:22:24
817
1
原创 栈和队列的相互实现
两个栈实现队列一、两个栈实现对列stack<int > Out(int a[],int n){ stack<int> s;//定义两个栈 stack<int> s1;//一个栈来接收数据然后放进另一个栈中 for (int i = 0; i < n; i++) { s.push(a[i]); } while (!s.empty()) { s1.push(s.top()); s.pop(); } return s1;/.
2020-08-13 19:23:12
197
原创 浅谈时间、空间复杂度
时间、空间复杂度/*2020/8/11*/时间复杂度:一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f (n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称
2020-08-11 16:59:14
394
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人