如何根据包含每种算法搜索迭代次数的整数集来确定最佳、平均和最差算法

问题描述 投票:0回答:1

我有 4 组整数,每组包含 30 个项目。每个集合属于一个搜索算法;顺序、二元、跳转和三元搜索。集合中的每个值表示算法在 ArrayList 中查找特定键所花费的迭代次数。 我必须仅使用集合中的数据找出这 4 种算法中最好的、最差的和平均的算法。 (我还有另一组包含键的整数。我也知道 ArrayList 的大小)。

到目前为止我尝试过的: 求每个集合的平均值,并确定平均值最低的集合是最好的算法,平均值最高的集合是最差的。 对于平均算法,我取所有设定平均值的平均值,并确定最接近它的设定平均值是平均算法。

我很困惑,因为在我看来,我使用这些数据寻找最佳、最差和平均算法的方法是不正确的。难道是我做错了什么?如果不是这个我该怎么办?

编辑:

Example:
Set 1: 12525, 6829, 15194, 5212, 6461
Set 2: 15, 14, 15, 14, 13
Set 3: 227, 241, 179, 64, 169
Set 4: 9, 4, 10, 9, 9

keys: 12526, 16830, 15195, 5213, 6462
ArrayList Size: 20972
What I got:
Best Algorithm: Set 4
Worst Algorithm: Set 1
Average Algorithm: Set 3

我不知道预期的输出应该是什么。有人告诉我要自己解决这个问题,但我被困住了。最好、平均和最差取决于他们的搜索速度。

algorithm search time-complexity
1个回答
0
投票

如果没有“良好”指标,就无法回答这个问题,这取决于上下文。如果您可以完全按照提供给您的问题发布问题,我们也许可以提供帮助。

示例:

  • 如果一个大 X 倍的数字总是差 X 倍,那么总和最小的集合是最好的。
  • 可能某些范围内的小数字同样好,某些范围内的大数字同样不好,并且它们之间的某个地方的“坏”程度与数字的大小成正比。例如。 1-1000 同样好,1001-2000 坏度呈线性变化,2001+ 同样坏。在这里,您更喜欢 30 个 1000,而不是 29 个 1 和单个 1001。
  • 也许“坏度”与数字的平方或对数,或者更奇特的东西成比例。

算法的效率通常通过最坏情况分析来衡量。如果没有任何关于如何定义善良的具体说明,也没有任何上下文,我会默认说最大值小于任何其他集合的最大值的集合是“最佳”。因此,如果我们有一组全是 1 和 100,那么它会被一组全是 99 击败。

© www.soinside.com 2019 - 2024. All rights reserved.