
数据结构与算法
文章平均质量分 84
小哈龙
一颗勇往直前的心
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Algorithm to find the area of a polygon
该摘要介绍了一个多边形面积计算算法及其应用。算法通过输入顶点坐标数组(X,Y)和顶点数量,采用累加公式计算面积,结果除以2得到最终值。当顶点顺时针排列时面积为正,逆时针则为负值。算法在计算机坐标系(y轴向下)中可通过逆时针排列顶点抵消方向影响。应用场景包括计算多边形面积和判断顶点排列方向(通过面积正负值)。文中还提供了JavaScript实现示例和Kicad源码参考,后者增加了对封闭性检查和绝对值返回的处理。原创 2025-08-15 11:12:52 · 253 阅读 · 0 评论 -
图形学常用曲线
图形学中的曲线通常与计算机图形、动画、几何建模等相关,用于表示物体的形状、路径或运动轨迹。与数学函数曲线相比,图形学中的曲线往往更侧重于实际应用,能够在数字模型中精确地描绘复杂的曲线和表面。原创 2025-02-28 14:36:28 · 890 阅读 · 0 评论 -
常用空间数据结构对比
数据结构适用场景优点缺点典型应用四叉树(Quadtree)二维空间数据简单,查询和插入高效对不均匀分布的数据支持差地图索引,图像分割,区域查询八叉树(Octree)三维空间数据适合处理三维稀疏数据存储开销大,不均匀数据性能差3D建模,虚拟现实,游戏空间查询k-d树(k-dimensional tree)高维空间数据高效的范围查询和邻近查询高维空间时“维度灾难”KNN算法,机器学习,特征空间查询R树(R-tree)多维空间数据,矩形区域索引。原创 2025-02-27 09:59:05 · 931 阅读 · 0 评论 -
kicad中R树的使用
元件布局和碰撞检测:加速元件间的碰撞检测。设计规则检查(DRC):快速检测元件和线路间的最小间距。自动布线:帮助快速检测布线路径的可用空间。3D 可视化与碰撞检测:提高元件间物理碰撞检测的效率。R 树通过提供高效的空间查询能力,在大规模设计中加速空间计算和碰撞检测,帮助 KiCad 实现更快、更精确的设计验证。虽然 KiCad 的具体实现细节可能因版本不同而有所变化,但 R 树作为一个强大的空间索引工具,在 PCB 设计优化中扮演着重要角色。原创 2025-02-26 17:41:23 · 945 阅读 · 0 评论 -
c++ 三维图形 R树的简单应用案例
我们可以构建一个简单的应用案例,其中使用三维 R 树来存储和查询3D空间中的矩形包围盒(Bounding Boxes)。假设我们的应用场景是存储一些 3D 物体(如建筑、车辆、物品等)的空间位置,并根据查询范围来返回哪些物体与查询区域相交。原创 2025-02-26 17:07:23 · 229 阅读 · 0 评论 -
数学结构-图
(Edge)构成的数学结构,用于表示一类具有节点间连接关系的数据结构。图在计算机科学中有广泛的应用,例如在社交网络、地图导航、网络通信等领域。邻接表用一个数组或链表来表示每个顶点的邻居。对于每个顶点,它维护一个链表或数组,包含与它直接相连的顶点。这种表示方法的空间效率比邻接矩阵更高,尤其是对于稀疏图(即边数远小于顶点数的图)来说。的矩阵,矩阵中的每个元素表示两个顶点之间是否有边连接。邻接矩阵使用一个二维数组来表示图。个顶点的图,邻接矩阵是一个。图(Graph)是由一组。(Vertex)和一组。原创 2025-01-20 16:43:46 · 616 阅读 · 0 评论 -
B+树
B+树中的所有数据均保存在叶子结点,且根结点和内部结点均只是充当控制查找记录的媒介,并不代表数据本身,所有的内部结点元素都同时存在于子结点中,是子节点元素中是最大(或最小)元素。并且此时91所在结点的兄弟节点无法给该节点提供关键字,因此该结点和兄弟结点合并,并且需要修改合并后的节点的父节点的关键字值,合并后的结点的关键字个数满足条件。在B+树中,叶节点包含信息,所有非叶节点仅起索引作用,非叶节点的每个索引项只含有对应子树的最大关键字和指向该子树的指针,不含有该关键字对应记录的存储地址。(橙色为修改之后的)转载 2024-05-17 15:28:54 · 72 阅读 · 0 评论 -
常见的hash算法及其原理
Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。转载 2024-05-17 11:47:20 · 312 阅读 · 0 评论 -
四叉树空间索引原理及其实现
四叉树索引的基本思想是将地理空间递归划分为不同层次的树结构。它将已知范围的空间等分成四个相等的子空间,如此递归下去,直至树的层次达到一定深度或者满足某种要求后停止分割。四叉树的结构比较简单,并且当空间数据对象分布比较均匀时,具有比较高的空间数据插入和查询效率,因此四叉树是GIS中常用的空间索引之一。常规四叉树的结构如图所示,地理空间对象都存储在叶子节点上,中间节点以及根节点不存储地理空间对象。四叉树示意图四叉树对于区域查询,效率比较高。但如果空间对象分布不均匀,随着地理空间对象的不..转载 2021-06-17 16:28:14 · 3649 阅读 · 0 评论 -
浅谈常见的七种加密算法及实现
本文转载自:https://blog.youkuaiyun.com/baidu_22254181/article/details/82594072前言数字签名、信息加密是前后端开发都经常需要使用到的技术,应用场景包括了用户登入、交易、信息通讯、oauth等等,不同的应用场景也会需要使用到不同的签名加密算法,或者需要搭配不一样的签名加密算法来达到业务目标。这里简单的给大家介绍几种常见的签名加密算法和一些典型场景下的应用。正文1. 数字签名数字签名,简单来说就是通过提供可鉴别的数字信息验...转载 2021-02-22 19:23:36 · 5589 阅读 · 0 评论 -
红黑树c++实现
红黑树的实现文件(RBTree.h)/** * C++ 语言: 红黑树 * * @author skywang * @date 2013/11/07 */#ifndef _RED_BLACK_TREE_HPP_#define _RED_BLACK_TREE_HPP_#include <iomanip>#include <iostream>using namespace std;enum RBTColor{RED, BLACK};template转载 2020-07-12 21:14:57 · 244 阅读 · 0 评论 -
二叉树的遍历方法总结与c++实现
概述:二叉树的遍历方式分为:深度遍历(前序,中序,后序)广度遍历(层次遍历)二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有深度遍历和广度遍历,深度遍历有前序、中序以及后序三种遍历方法,广度遍历即我们平常所说的层次遍历。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁,而对于广度遍历来说,需要其他数据结构的支撑,比如堆了。所以,对于一段代码来说,可读性有时候要比代码本身的效率要重要的多。四种主要的遍历思想为原创 2020-07-02 22:27:54 · 809 阅读 · 0 评论 -
哈夫曼树(二)之 C++详解
本文转载自:http://www.cnblogs.com/skywang12345/更多内容:数据结构与算法系列 目录哈夫曼树的介绍Huffman Tree,中文名是哈夫曼树或霍夫曼树,它是最优二叉树。定义:给定n个权值作为n个叶子结点,构造一棵二叉树,若树的带权路径长度达到最小,则这棵树被称为哈夫曼树。 这个定义里面涉及到了几个陌生的概念,下面就是一颗哈夫曼树,我们来看图解...转载 2020-04-08 14:44:35 · 529 阅读 · 0 评论 -
欧几里得算法(辗转相除法)
算法是程序的灵魂,不懂算法的程序员不是一个合格的程序员。源自LeetCode上的一道算法题,说实话,我已经忘记欧几里得算法是怎么实现的了。。。简介:欧几里得算法(又称辗转相除法),旨在解决求两个正整数的最大公约数的算法。计算公式gcd(a,b) = gcd(b,a mod b)编码实现:c语言(参考百度百科)/*欧几里德算法:辗转求余原理: gcd(a,b)=gc...原创 2020-03-13 12:01:55 · 713 阅读 · 0 评论 -
平衡二叉树
前言上篇文章里面,我们已经学习了二叉搜索树的相关内容,二叉搜索树有一个缺点,在插入数据是有序的序列(包括升序和降序),会导致二叉树退化成链表,从而导致在查找,删除,添加时的性能均从O(logN)降低为O(N),这是不能接受的。如下图:究其原因,是因为二叉搜索树退化成链表的时候,树的高度与节点的个数相等,也就是成正比,所以为了优化这种情况,就出现了具有平衡能力的二叉搜索树,其中AVL树是...转载 2019-11-11 16:48:32 · 2974 阅读 · 0 评论 -
算法的时间复杂度与空间复杂度
时间复杂度1.算法的效率虽然计算机能快速的完成运算处理,但实际上,它也需要根据输入数据的大小和算法效率来消耗一定的处理器资源。要想编写出能高效运行的程序,我们就需要考虑到算法的效率。算法的效率主要由以下两个复杂度来评估:时间复杂度:评估执行程序所需的时间。可以估算出程序对处理器的使用程度。空间复杂度:评估执行程序所需的存储空间。可以估算出程序对计算机内存的使用程度。设计算法时,...转载 2019-11-11 16:21:57 · 682 阅读 · 0 评论 -
完美二叉树, 完全二叉树和完满二叉树
树在数据结构中占有非常重要的地位。本文从树的基本概念入手,给出完美(Perfect)二叉树,完全(Complete)二叉树和完满(Full)二叉树的区别。如果学习过二叉树,但是对这三种二叉树并没有深入的理解,或者完全被国产数据结构教科书所误导(只听说过满二叉树和完全二叉树)的朋友不妨花点时间耐着性子将本文仔细阅读N(>=1)遍。1. 树(Tree)的基本概念1.1 树的定义A ...转载 2018-06-22 15:05:42 · 35495 阅读 · 9 评论 -
c++实现八大排序算法
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间...转载 2018-06-07 14:29:14 · 1486 阅读 · 1 评论