关于算法分析/性能?

发布于 2024-12-15 02:08:22 字数 569 浏览 2 评论 0原文

在此处输入图像描述

如图所示,我有以下结构来将壁橱“曲线”存储在“切片”中。 “曲线”由实现为双向链表的“节点”组成。

这是伪代码:

class Slice {
 List<Curve*> curves;
}

class Curve {
 int objectID;
 Node *headNode;
}

class Node {
 double x,
 double y,
 Node *next;
 Node *previous
}

我使用 QT 绘制方法渲染此结构,并且我想选择最接近鼠标点的节点。

我所做的是,

a)。获取“切片”中的每个“曲线”

b)。遍历所选曲线中的所有节点,计算从鼠标点到每个点的距离并进行比较。

我的问题:

1)如果我们取曲线数量为“c”,平均节点为“n”,则算法复杂度为 O(n*c)。 这个分析正确吗?

2)有没有办法改进算法,使其更快?使用二叉树、哈希表等?

enter image description here

As show in the picture I have following structures to store set of closet "Curves" in a "Slice".
A "Curve" consist of "Nodes" implemented as a doubly-linked-list.

Here is the psuedo code :

class Slice {
 List<Curve*> curves;
}

class Curve {
 int objectID;
 Node *headNode;
}

class Node {
 double x,
 double y,
 Node *next;
 Node *previous
}

I render this stucture using QT paint methods and I want to select the node closest to the mouse point.

What I do is,

a).Get each "Curve" in the "Slice"

b).Go through all nodes in selected curve and calculate the distance from mouse-point to each point and compare.

My questions :

1) if we take number of curve is "c" and average nodes is "n" the algorithm complexity is O(n*c).
Is this analysis correct?

2)Is there anyway to improve the algorithm ,make it more faster? Using Binary Tree,HashTable ..etc?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

末蓝 2024-12-22 02:08:22

1) 是的,您的分析是正确的

2) 您可以通过使用最近邻搜索算法。

最简单的可能是使用 kd 树

1) Yes your analysis is correct

2) You can get logarithmic complexity by using the nearest neighbor search algorithms.

The simplest of all is perhaps using the k-d tree

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文