algorithm - 计算鼠标与文本输入算法的 Big O 时间复杂度

标签 algorithm macros big-o

我正在尝试确定是使用宏打开一组带书签的链接更快还是手动打开。

手动算法:

  1. 切换到或打开 Chrome。这需要多长时间取决于您打开或切换到应用程序的方式。

  2. 用眼睛找到书签菜单栏。

  3. 用手(鼠标/触控板)将鼠标移至书签菜单栏。这不同于用眼睛找到它。

  4. 如果书签不在第一级,则找到正确的根父文件夹。这里的问题是您可能不记得它,需要四处看看。

  5. 用鼠标选择正确的根父文件夹。

  6. 用眼睛找到 X 个正确的子父文件夹。相同的 问题如#4。

  7. 用鼠标选择 X 个正确的父文件夹。

  8. 右键单击所需的组文件夹

  9. 查看有关如何打开书签的 3 个选项{相同 窗口、新窗口、隐身窗口}。

  10. 当然要动脑子从 3 个选项中选择,哈哈。

  11. 用鼠标做出与您的选择相对应的选择。

这就是第一个算法。也许可以根据上下文以某种方式减少它。

宏算法:

  1. 点击您选择的键盘快捷键触发器
  2. 键入唯一标识的最少字符数 书签组。当然你要记住组名。
  3. 点击回车

实际算法可以在这里找到:https://forum.keyboardmaestro.com/t/how-to-create-a-macro-to-open-a-group-of-tabs-in-a-browser/7447/7 )

我显然有偏见,因为我创建了宏,但我正在寻找一些技术评估来证明一个比另一个更快。

更新
我知道这不是一个突出的计算问题,所以请做出并列出假设以使其成为现实。

例如,手动步骤 #3,移动鼠标,涉及 X 和 Y 坐标,那么这不是指数级的吗?

此外,手动步骤 4-8 涉及导航层次结构,这类似于导航树结构。

最佳答案

大 O 表示法用于具有可变大小(通常用 N 表示)的问题,并且重要的是

  • 使得 N 足够大(通常是几千或几百万而不是几百)

  • 不说明实际成本,只说明它们如何随 N 增长。

例如,知道 Quicksort 是 O(N Log N) 和 BubbleSort 是 O(N²),但您无法判断 N = 10 时哪一个最快。一点也不。 (顺便说一下,很可能在某些情况下最快,而在其他情况下最慢。)


说 O(N Log N) 比 O(N²) 快是一种幼稚且错误的说法。对于小 N,大 O 表示法完全没用。

对于您的问题,您可以做的是建立精确的复杂度公式(详细说明操作计数并为它们分配真实的持续时间)。这可能很困难,但更容易对一些代表性案例进行基准测试。

关于algorithm - 计算鼠标与文本输入算法的 Big O 时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45205833/

相关文章:

arrays - 在 O(log n) 中搜索未排序数组中的值

algorithm - 扩展节点是什么意思?

algorithm - 长度为 4 的回文子序列的个数

python - python 中的宏

clojure - 在 Clojure 中映射符号绑定(bind)宏(在 fn 中)

c - if else C语言的简写

algorithm - 最坏情况运行时间计算

java - 找到 "for loop that has method call"的大 oh

java - 如何使用递归创建二进制搜索算法

c++ - 计算程序的运行时间(大 O 表示法)