重力排序:这可以通过编程实现吗? [关闭]

2024-01-26

我最近一直在考虑在排序算法中使用面向对象的设计。然而,我无法找到一种正确的方法来更接近地实现在 O(n) 时间内进行排序的排序算法。

好吧,这就是我一周来一直在想的事情。我有一组输入数据。我将为每个输入数据分配一个质量(假设输入数据的类型为Mass和一种类型Sphere。如果我们假设所有物体都是形状与其质量成正比的完美球形物体,那么最重的物体首先接触地面。)。我将把所有输入数据放置在距地球相同距离的空间中。我会让他们自由落体。根据万有引力定律,最重的物体首先落地。它们击中的顺序将为我提供排序后的数据。这在某种程度上很有趣,但在内心深处,我觉得使用我迄今为止学到的面向对象应该可以做到这一点

真的有可能制作一种使用重力拉力的排序技术吗?还是我愚蠢/疯狂?

Edit:事实证明所有物体同时撞击地面,因此我引入了球形物体的概念。


问题是,虽然其中之一ideasOOP 的目的可能是对现实世界进行建模,但这并不意味着现实世界中某件事需要多长时间与用计算机模拟它需要多长时间之间存在直接对应关系。

想象一下您的程序所需的实际步骤:

  1. 必须为数据集中的每个项目构建一个对象。在大多数现代硬件上,仅此一项就需要迭代,因此会使您的策略为 O(n)best.
  2. 对于每个对象,都需要模拟重力的影响。同样,最明显、最直接的实现方式就是迭代。
  3. 必须捕获编程模型中每个对象降落在“地球”表面的时间,并且通过某种特定于实现的机制,需要将相应的对象插入到有序列表中。

考虑这个问题会进一步引入额外的复杂性。问问自己:您需要将这些物体放置在多高的位置才能开始?显然足够高,所以实际上最大的一个falls;即距离地球比最大物体的半径更远。但你怎么知道那有多远呢?您需要首先确定集合中最大的对象;这(可能)再次需要迭代。此外,人们可能会想象这种模拟可以是多线程的,以尝试模拟对象概念的实时行为actually坠落;但随后您会发现自己可能在检测到新冲突的同时尝试将项目添加到集合中(该操作显然需要非零时间)。因此这也会产生线程问题。

简而言之,我很难想象如何在没有特殊硬件的情况下仅使用 OOP 来正确实现这个想法。这么说来,确实是is一个好主意。事实上,它让我想起珠子排序 http://en.wikipedia.org/wiki/Bead_sort——一种算法,虽然与你的想法不同,但也是一种利用重力物理概念的排序解决方案,并且毫不奇怪地需要专门的硬件。

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

重力排序:这可以通过编程实现吗? [关闭] 的相关文章

  • 时间序列数据预处理 - numpy strides 技巧以节省内存

    我正在预处理一个时间序列数据集 将其形状从二维 数据点 特征 更改为三维 数据点 时间窗口 特征 在这样的视角中 时间窗口 有时也称为回顾 指示作为输入变量来预测下一个时间段的先前时间步长 数据点的数量 换句话说 时间窗口是机器学习算法在对
  • 如何从列表类别中对 pandas 数据框进行排序?

    所以我在下面有这个数据集 我想根据我的列表从 名称 列进行排序 以及按 A 升序和按 B 降序排序 import pandas as pd import numpy as np df1 pd DataFrame from items A 1
  • Collections.sort(list) 和 list.sort(Comparator) 之间的区别

    有什么理由让我应该选择Collections sort list 方法而不是简单地调用list sort 内部Collections sort只是调用sort的方法List无论如何 上课 令人惊讶的是几乎每个人都告诉我使用Collectio
  • 维护/更新mysql中的记录顺序

    我在 mySql 中有一个记录表 我需要按照用户指定的方式维护它们的订单 所以我添加了一个 位置 列 当我移动特定记录时更新所有记录的 SQL 语句是什么 我有类似的东西 UPDATE items SET position 2 WHERE
  • 使用元类的 __call__ 方法而不是 __new__?

    在讨论元类时 the docs http docs python org reference datamodel html state 您当然也可以重写其他类方法 或添加新的 方法 例如定义一个自定义 call 方法中的 元类允许在调用类时
  • 如何在文件系统中存储图像

    目前 我已将图像 最大 6MB 作为 BLOB 存储在 InnoDB 表中 随着数据大小的增长 夜间备份变得越来越慢 阻碍了正常性能 因此 二进制数据需要进入文件系统 指向文件的指针将保存在数据库中 数据具有树状关系 main site u
  • 多重继承争论 II:根据 Stroustrup 的说法 [已关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我非常了解关于为什么接口继承优于多重继承的传统争论 这里已经有一篇文章 C 应该有多重继承吗 https stackoverflow com q
  • 在 O(n) 时间内排序?

    我被这个问题困扰了 2周 知道如何处理它吗 令 L 为 n 个不同整数的列表 假设 L 的 x 的元素在 1 750 范围内 设计线性排序算法对 L 的元素进行排序 我已经尝试过插入排序 但我不确定我的方法是否正确 Construct an
  • 使用布尔值进行冒泡排序以确定数组是否已排序

    我有以下用于冒泡排序的代码 但它根本不排序 如果我删除布尔值那么它工作正常 我知道 由于我的 a 0 小于所有其他元素 因此没有执行交换 任何人都可以帮助我解决这个问题 package com sample public class Bub
  • 举例解释bpe(字节对编码)?

    有人可以帮忙解释一下背后的基本概念吗BPE模型 除了这张纸 https arxiv org abs 1508 07909 目前还没有那么多解释 到目前为止我所知道的是 它通过将罕见和未知的单词编码为子词单元序列来实现开放词汇表上的 NMT
  • Java递归方法求阶乘返回负输出[重复]

    这个问题在这里已经有答案了 我知道这是溢出 但问题是 20 是相对较小的数字 这不应该发生 对吧 有没有更好的方法来查找大数 例如 1000 的阶乘 而不会得到这种奇怪的结果 public class RecursiveFunctionsE
  • Facebook api 回调的上下文?

    有没有办法在 javascript facebook sdk api 回调中传递上下文 这是一个简单的例子 现在这不起作用 因为我的回调函数中的变量 this name 将是未定义的 因为它不在我的用户对象上下文中 知道怎么做吗 funct
  • 使用 NSError 检查错误的正确结构

    我正在编写各种例程 并尽力保持其整洁和重构 我正在创建的方法开始看起来与此代码类似 IBAction buttonPress id sender Create Document Shopping List with this documen
  • 如何用约束标记一大组“传递群”?

    在 NealB解决方案之后进行编辑 与以下解决方案相比 NealB的解决方案非常非常快任何另一个 https stackoverflow com q 18033115 answers and 提出了关于 添加约束以提高性能 的新问题 Nea
  • jQuery 表格排序

    我有一个非常简单的 HTML 表格 有 4 列 Facility Name Phone City Specialty 我希望用户能够排序设备名称 and City only 我如何使用 jQuery 进行编码 我发现了这个 我想我应该投入
  • O(1) 算法确定节点是否是多路树中另一个节点的后代?

    想象一下下面的树 A B C D E F 我正在寻找一种方法来查询 F 是否是 A 的后代 注意 F 不需要是directA 的后代 在这种特殊情况下这是正确的 只需要针对更大的潜在后代节点池测试有限数量的潜在父节点 当测试一个节点是否是潜
  • 动态规划 (DP) 中的重叠子问题是什么?

    为了使动态规划适用 问题必须具有两个关键属性 最优子结构 and 重叠子问题 1 https en wikipedia org wiki Dynamic programming 对于这个问题 我们只关注后一个属性 有各种不同的定义重叠子问题
  • Prim 的迷宫生成算法:获取相邻单元格

    我基于 Prim 算法编写了一个迷宫生成器程序 该算法是 Prim 算法的随机版本 从充满墙壁的网格开始 选择一个单元格 将其标记为迷宫的一部分 将单元格的墙壁添加到墙壁列表中 While there are walls in the li
  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • 如何为自定义 S3 类实现提取/取子集 ([ [<-, [[ [[<-)] 函数?

    我有一个自定义的 S3 类foo 它在正常的基础上添加了一些自定义行为data frame foo object lt data frame class foo object lt c foo data frame 对于这个类 还应该有一个

随机推荐