(Dis)由于语言内部原因,证明一种算法比另一种算法运行得更快

the*_*ace 7 java algorithm optimization complexity-theory time-complexity

对于大学的项目,当给定一组元素和所述元素之间的关系集合时,我们必须实现一些不同的算法来计算等价类.

我们被指示实施Union-Find算法及其优化(Union by Depth,Size).偶然(做一些我认为对于算法的正确性是必要的)我发现了另一种优化算法的方法.

它没有Union By Depth那么快,但接近.我不能为我的生活弄清楚为什么它的速度和它一样快,所以我咨询了一位无法弄明白的助教.

该项目是在java中,我使用的数据结构基于简单的整数数组(对象,而不是int).后来,在项目的评估中,我被告知它可能与'Java缓存'有关,但我可以在网上找不到缓存如何影响这一点.

如果没有计算算法的复杂性,最好的方法是证明或反驳我的优化是如此快,因为java的做法是什么?用另一种(低级?)语言实现它?但谁能说语言不会做同样的事情呢?

我希望我说清楚,

谢谢

Mit*_*eat 4

唯一的方法是证明算法的最坏情况(平均情况等)复杂性。

因为如果你不这样做,这可能只是以下因素综合作用的结果

  • 具体数据
  • 数据大小
  • 硬件的某些方面
  • 语言实现的某些方面
  • ETC。