网格数据结构

2023-12-29

通常,“可扩展”网格表示为列表列表(行列表,每行都有单元格列表),这些列表是某种链接列表。

在此数据结构中操作(删除、插入)行既简单又便宜,只需重新链接以前的节点即可,但是当涉及到列时,例如删除列,它会变成一个非常长的操作,我需要“循环” ' 要删除索引单元格的所有行。显然这不是一个好的行为,至少对我来说是这样。

我这里不是在谈论数据库;而是在谈论数据库。我发现的一个很好的例子是将一些文本文件放入文本编辑器中,(据我所知)文本编辑器主要将行分成行,并且很容易删除行。我希望删除一列与删除某些行一样便宜且高效。

最后,我需要的是一些多维网格,但我认为任何二维简单网格都适用于MD,我对吗?


你可以有一个二维的“链接矩阵”(我忘记了正确的术语):

... Col 3 ... Col 4 ...
      |         |
... --X-- ... --Y-- ...
      |         |
...  ...  ...  ...  ...

每个单元有四个邻居,如图所示。此外,您还需要行标题和列标题来指示行/列位置,以及指向每行或列中的第一个单元格。这些最容易表示为没有向上邻居的特殊单元格(对于列标题)。

在 3 和 4 之间插入新列意味着向下迭代第 3 列中的单元格 X,并插入新的右邻居 Z。这个新单元格 Z 向左链接到 X,向右链接到 Y。您还需要添加一个新的列标题,并且垂直连接新单元格。然后4之后的所有列的位置都可以重新编号(第4列变成第5列)。

... Col 3 Col 4 Col 5 ...
      |     |     |
... --X-----Z-----Y-- ...
      |     |     |
...  ...   ...   ...  ...

插入一列的成本是 O(n)用于插入和链接新单元格,并且再次 O(m) 用于更新列标题。这与删除过程类似。

因为每个单元格只有四个链接,所以行插入/删除使用相同的算法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网格数据结构 的相关文章

  • 寻找下一个素数的最佳方法(Java)

    我被要求编写一个程序以最佳方式找到下一个素数 我编写了这段代码 但找不到最佳答案 有什么建议么 public static int nextPrime int input input now find if the number is pr
  • 识别鼠标移动的算法

    我想知道是否有任何研究 算法可以指定鼠标在识别 等字符时的偏差量使用鼠标绘制 某种光学字符识别 但可能是一个更简单的版本 是否有某种算法可以让我说用户绘制的问号确实是一个问号 而不是其他具有一定准确性的东西 就像 Windows 平板电脑软
  • 多维数组、Vuex 和变异

    我正在尝试添加和删除存储在 Vuex 中的多维数组中的项目 数组是一组类别 每个类别又有一个子类别 无穷大 不是简单的二维数组 示例数据集是这样的 id 123 name technology parent id null children
  • 使用 Numba 加速矢量距离计算

    以下是我为 3 D 环形几何中的距离 平方 计算编写的一些函数 用于该 3 D 空间中的粒子集合 import itertools import time import numpy as np import scipy import num
  • 更合适地说插入未排序动态数组的摊销 O(1) 与 O(n) ?

    这属于 stackoverflow com help on topic 中的 软件算法 在本例中 是一种将项目添加到动态未排序数组的软件算法 This is chart we made in class about the runtimes
  • 处理流星中的长服务器端计算

    我正在使用 jimp https www npmjs com package jimp https www npmjs com package jimp 在meteor JS中生成图像服务器端 换句话说 我正在使用递归算法 计算 图像的像素
  • 在 3d 网格中转发(绘制)线

    我需要类似 Bresenham 算法的东西 但是 对于 3d 网格空间来说不完全是这样 我需要 3d 单元网格 边缘尺寸 1 0 从 S 点开始 前进到 K 点 接触 该线接触的所有单元格 即使只有边缘 点被触摸我需要触摸所有 8 个单元
  • 如何在 JavaScript 中构建树模式匹配算法?

    好吧 这是一个有点复杂的问题 但是 tl dr 基本上是如何使用 模式树 解析 实际树 如何检查特定的树实例是否与特定的模式树匹配 首先 我们有我们的结构模式树 模式树通常可以包含以下类型的节点 sequence节点 匹配一系列项目 零个或
  • Java:数组和向量

    我习惯于使用 PHP 但最近我一直在使用 Java 并且试图解决这个问题让我很头疼 我想用 Java 保存这个表示 Array col name 1 gt Array 1 gt col value 1 2 gt col value 2 n
  • 线段树java实现[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 你知道 二进制 的良好实现吗线段树 http en wikipedia org wiki Segmen
  • 关于Marching Cubes算法的澄清

    关于Marching Cubes 我对其算法和实现有一些疑问 我已经阅读了 Marching Cubes 的 Paul Bourke 优秀文章以及网站上可用的源代码 但是 我在理解以及如何以自己的方式实现算法方面仍然遇到了一些问题 问题如下
  • “扩展”numpy ndarray 的好方法?

    有没有 扩展 numpy ndarray 的好方法 假设我有一个像这样的 ndarray 1 2 3 4 我希望每行通过填充零来包含更多元素 1 2 0 0 0 3 4 0 0 0 我知道一定有一些蛮力的方法可以做到这一点 比如构造一个带有
  • 是否有一种算法可以在线性时间内计算数组反转?

    我知道有多少倒转 en wikipedia org wiki Inversion 28discrete mathematics 29 in an n 元素数组可以在 O n log n 操作使用增强型归并排序 http www geeksf
  • 什么是“朴素”算法,什么是“封闭式”解决方案?

    我有一些关于描述算法时使用的术语语义的问题 首先 朴素 算法是什么意思 这与给定问题的其他解决方案有何不同 解决方案还可以采取哪些其他形式 其次 我听到很多人提到 封闭式 解决方案 我也不知道这意味着什么 但在尝试解决递归关系时经常会出现
  • 如何求两个地点的经纬度距离?

    我有一组位置的纬度和经度 怎么找distance从集合中的一个位置到另一个位置 有公式吗 半正矢公式假定地球是球形的 然而 地球的形状更为复杂 扁球体模型会给出更好的结果 如果需要这样的精度 你应该更好地使用文森特逆公式 See http
  • 如何在 C# 中以编程方式创建柔和的颜色?

    根据所需的颜色数量均匀分布地生成它们 如果指定的计数为 8 则看起来像这样 List
  • 坐标算法 - 绕中心旋转

    通过查看这张图片 我想您会很好地理解我的问题 图片已删除 网址不再有效 现在返回广告 所以基本上我想要一个函数 它接受一个对象作为参数 并根据我之前添加的对象数量为该对象提供正确的坐标 假设我将所有这些对象添加到一个数组中 objectAr
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data
  • php 数组中出现意外的 json 输出结构

    我正在尝试转换动态数据 如何从 PHP 获取此 JSON JSON 122240cb 253c 4046 adcd ae81266709a6 item 0 3 这就是我所做的 但它不起作用 PHP json array 122240cb 2

随机推荐

  • 全屏后导航栏下的UIView

    我有一个带有导航栏的应用程序 当我单击应用程序中的照片预览时 它会全屏显示照片 但是当我关闭全屏时 我的控制器的视图位于导航栏下方 我在 StackOverflow 上看到有必要添加这一行 self edgesForExtendedLayo
  • DjangoProject 没有出现在我的 Docker-Image (Docker toolbox for windows home) 中

    我正在尝试使用 docker compose 构建一个 django 项目 例如它在Docker 文档 https docs docker com compose django 我使用 Windows 10 Home 的 Docker 工具
  • _UIFallbackPresentationViewController

    当我关闭通过点击 iPhone 上 UIWebView 中 UIMenuController 上的 定义 打开的字典时 我不断收到以下错误 Unbalanced calls to begin end appearance transitio
  • 如何使用jquery创建动态变量?

    我想要动态创建一些 jquery 变量 在我的代码中 我有一个循环 并且我想使用循环值创建一些变量 这是我的示例代码 array student parent employee each user types function index
  • 如何强制执行软件试用安装的到期日期?

    我需要为我的定制软件提供试用期 我有一个 64 位 C 应用程序 它使用 64 位多处理器支持 DLL 其他要包含的实用程序是用 C 编写的 exe 和 dll 我必须能够加密 C 代码 将软件加密为仅在特定计算机上运行 并强制执行不能通过
  • 使用 Excel 宏/vba 打开/关闭图表系列的可见性

    我正在 Excel 中制作折线图 图表 并将多个数据系列绘制到同一个图表上 我需要创建一个宏 VBA 解决方案 可以通过按下按钮 或复选框等 打开 关闭这些系列的可见性 类似这张图 通过excel菜单系统手动完成 我试图查看所有成员变量 方
  • 在位图图像中设置背景颜色

    我想将画布保存为图像 它可以工作 但背景颜色是黑色 我必须如何添加才能改变颜色 我使用这段代码 Size size new Size surface Width surface Height surface Measure size sur
  • 如何打印带有参数值的调用堆栈?

    功能traceback print stack 打印调用堆栈 如果我们可以看到每个级别的参数值 将有助于调试 但我找不到办法做到这一点 例如 def f1 a 2 f2 a a 1 def f2 a 3 f3 def f3 a 4 prin
  • 为什么 MongoDB 文档建议不要使用 DBREF?

    The DBREF 的 MongoDB 文档 https docs mongodb org manual reference database references say 除非您有令人信服的理由使用 DBRef 否则请使用手动引用 为什么
  • 如何减少对模板函数的调用

    有一个功能 template
  • 有没有可以填充本机 Windows 表单字段的 python 模块?

    我想知道有哪些 Python 模块可以帮助我在本机 Windows 应用程序 IDE 中输入表单数据 例如 受密码保护的 USB 具有输入密码的应用程序 我想通过运行应用程序并使用密码填写表单来自动化此过程 提前致谢 roo7break 图
  • 如何在 Visual Studio 中的匿名命名空间内按函数名称设置断点?

    我有以下代码 namespace void Foo namespace Bar void Foo int main Foo Bar Foo return 0 我想设置断点Foo 按名称在匿名命名空间内 Ctrl B 键绑定 我可以对命名空间
  • iOS 应用程序启动时间测量

    如何计算从用户按下主屏幕上的启动按钮到应用程序处于活动状态 例如 直到第一个视图控制器的 viewDidAppear 方法 所需的时间 Id 不需要以编程方式实现 但必须可靠 类似地 在 Android 中 logcat 可以用于此效果 Y
  • 在 JSF 中分配“值表达式”代替“方法表达式”

    在我的复合组件中 我迭代了list
  • 在导航栏中按下后退按钮时会发生什么

    我想知道按下导航栏上的后退按钮时调用的函数是什么 我想在按下按钮时添加一些功能 谁知道呢 提前致谢 您想要的功能位于UINavigationBarDelegate协议 实施 navigationBar shouldPopItem 方法并将你
  • 为什么“htons”和“ntohs”同时存在?

    我不知道为什么htons and ntohs两者都存在于标准库中 他们做的事情完全相同 除非我不知何故感到困惑 同样适用于htonl and ntohl 它们制作自记录代码 告诉读者数据是按主机顺序还是网络顺序
  • 将 C# 中的结构序列化为 C++,反之亦然

    有没有一种简单的方法可以序列化 C 结构 然后从 C 反序列化它 我知道我们可以将 csharp 结构序列化为 xml 数据 但我必须在 c 中实现 xml 反序列化器 C 中哪种序列化器最容易从 C 反序列化 我希望两个应用程序 一个 C
  • 使用哪些 NuGet 源进行恢复?

    我正在做一个简单的dotnet restore在我的Mac上 我正在使用 目前 最新的dotnet CLI 版本 2 2 https dotnet microsoft com download 由于您的项目文件夹中可以同时拥有 NuGet
  • Caddy - 如何仅为一个域禁用 https

    我有一个 Caddy v2 的配置文件 如下所示 sentry mydomain ru reverse proxy sentry 9000 tasks mydomain ru reverse proxy taiga proxy 80 ain
  • 网格数据结构

    通常 可扩展 网格表示为列表列表 行列表 每行都有单元格列表 这些列表是某种链接列表 在此数据结构中操作 删除 插入 行既简单又便宜 只需重新链接以前的节点即可 但是当涉及到列时 例如删除列 它会变成一个非常长的操作 我需要 循环 要删除索