数据结构和算法
lsw5530
这个作者很懒,什么都没留下…
展开
-
Unity 攻击范围检测
众所周知moba中的每个英雄都有一套自己的技能的攻击范围方式,有如廉颇一样的圆形范围,有火舞一样的直线范围,吕布的扇形方天戟范围,还有上图的牛魔大招时的矩形范围等等。一些技能是通过物理的碰撞检测来判断的,一些则是通过这样的范围来检测的。物理检测的诟病就在于开销过大,在能考虑不用物理来检测的情况下更倾向来自己通过算法模拟实现。小菜的学习研究中,将这些自己算法检测的攻击范围划分了几种类型,并做了几个demo的演示。如上演示,小菜简单的讲这些类型划分成了如下几类:1). Cir...转载 2020-05-22 22:15:24 · 6968 阅读 · 2 评论 -
栈-链栈
栈的分类:顺序栈,链栈,双向栈。①顺序栈,即栈的顺序存储结构(数组),是利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序栈中的位置。当top=-1时候,表示为空栈。 由于顺序栈的操作位置基本在栈顶,所以,不需要查找插入和删除的位置,也不需要移动元素,因而顺序栈的基本操作要比顺序表简单的多,其基本操作时间复杂度均为O(1)②链栈,栈的另外一种存储方...原创 2020-04-01 16:47:57 · 487 阅读 · 0 评论 -
查找算法
一.前言查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算, 是很多程序中最耗时间的一部分,查找方法的优劣对系统运行效率影响很大。我会带大家一起学习几种常见的查找算法1.顺序查找 2.二分查找 3.插值查找 4.斐波那契查找 5.分块查找 6.树表查找 7.散列表查找 *二.基本概念1.查...原创 2020-03-12 00:10:08 · 508 阅读 · 0 评论 -
排序算法
一.前言排序在生活中比比皆是,每个学期评定奖学金时,首先要将学生按照各科成绩总和进行排名,然后选出符合条件的奖学金获得者;《福布斯》财富排行榜;世界500强——全球最大500家公司排名等。在个人计算机中最常用的排序就是在【资源管理器】窗口中右键,在弹出的快捷菜单中选择【排列图标】菜单项,按不同的方式排列图标可以很方便的找到想要的文件。以上所讨论的情况都是按照某种规则进行排序,以方便人们查找或检...原创 2020-03-11 23:43:56 · 440 阅读 · 0 评论 -
使用二叉树求解四则运算
数学表达式求值是程序设计语言编译中的一个最基本的问题,我们使用二叉树的方式解决这个问题。先将表达式转换为二叉树,然后通过先序遍历二叉树的方式求出表达式的值。由于我们只是练习二叉树的应用,所以我们的实训只考虑最简单的四则运算,不考虑括号,开方,求余等。原理:我们把表达式 3+2*9-16/4 转换成二叉树的表现形式。特点:操作数字都是叶子结点 运算符都是内部结点 ...原创 2020-03-11 23:12:12 · 2258 阅读 · 2 评论 -
线性表的概念
一.定义线性表是最简单也是编程中使用最多的一种数据结构。例如英文字母表,成绩单 线性表(Linear List)是具有相同特性的数据元素的一个有限序列,是对线性结构的抽象 。线性结构的特点是结构中的数据元素在位置上有序,并且元素之间存在一对一的线性关系。(1)除第一个位置的数据元素外,其它数据元素位置的前面都只有一个数据元素;(2)除最后一个位置的数据元素外,其它数据元素位置的...原创 2020-03-11 22:07:39 · 1439 阅读 · 0 评论 -
队列-链队列
队列的另外一种存储方式是链式存储,这样的队列称为链队列(Linked Queue)。 同链栈一样,链队列通常用单链表来表示,它的实现是单链表的简化。namespace 队列{ /// <summary> /// 链队列的 节点类 /// </summary> /// <typeparam name="T"></t...原创 2020-03-11 21:09:51 · 179 阅读 · 0 评论 -
队列-顺序循环队列
顺序队列(Sequence Queue)用一片连续的存储空间来存储队列中的数据元素. 用一维数组来存放顺序队列中的数据元素。 队头位置设在数组下标为 0 的端,用 front 表示; 队尾位置设在数组的另一端,用 rear 表示。 front 和 rear 随着插入和删除而变化。 当队列为空时, front=rear=0。 因为在出队列(删除元素)的时候,需要花费大量 的时间移动大量元素,速度很...原创 2020-03-11 20:50:29 · 1254 阅读 · 0 评论 -
栈和队列的概念
前言:栈和队列是常用的两种数据结构,他的逻辑结构和线性表相同,也属于线性结构。 不同之处在于,栈和队列的操作具有特殊性,他们只是线性表相关操作的一个子集。 更准确的说,一般线性表的插入和删除操作是不受限制的,而栈和队列上的插入和删除均受某种特殊限制。栈的操作只能在表的一端进行,队列的插入操作在表的一端进行而其它操作在表的另一端进行,所以,把栈和队列称为操作受限的线性表。原创 2020-03-11 20:21:42 · 2653 阅读 · 0 评论 -
链表
链表是一种物理上非连续、非顺序的存储结构,数据元素之间的顺序是通过每个元素的指针关联的。链表可以用来作为实现栈、队列等数据结构的基础。链表有一系列节点组成,每个节点一般至少会包含两部分的信息:(1)元素数据 (2)指向下一个元素的指针链表分类: (1)单向链表和双向链表 (2)静态链表(数组实现) 、动态链表(指针)链表的操作: 创建、...转载 2020-03-11 18:18:38 · 168 阅读 · 0 评论 -
二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历)
二叉树是一种非常重要的数据结构,非常多其他数据结构都是基于二叉树的基础演变而来的。对于二叉树,有深度遍历和广度遍历,深度遍历有前序、中序以及后序三种遍历方法,广度遍历即我们寻常所说的层次遍历。由于树的定义本身就是递归定义,因此採用递归的方法去实现树的三种遍历不仅easy理解并且代码非常简洁,而对于广度遍历来说,须要其他数据结构的支撑。比方队列。所以。对于一段代码来说,可读性有时候要比代码本身的效率...转载 2020-03-11 17:52:19 · 630 阅读 · 0 评论 -
二叉排序树(二叉查找树、二叉搜索树)
什么是二叉查找树:根节点的值大于其左子树中任意一个节点的值,小于其右节点中任意一节点的值,这一规则适用于二叉查找树中的每一个节点。本文章重点来讨论一下关于二叉查找树删除节点的问题。有一下二叉查找树,如图:在删除节点的时候我们只需考虑一下三种情况:(1)要删除的节点是叶子结点,如图:(2)要删除的节点有左节点但是没有右节点,或者有右节点但是没有左节点,如图:(3)要删...转载 2020-03-11 17:39:45 · 248 阅读 · 0 评论