我总是习惯于在解决图形理论问题时创建大量的课程,如:
class Node{
......
}
class Edge{
......
}
这通常会让我遇到性能和速度问题。因此,我觉得使用数组存储图形比将其存储在用户定义的类和结构(如列表和地图)中更快,尽管后者为代码提供了更大的灵活性和可读性。因此,使用数组和语言结构来表示图形确实会导致任何显着的性能提升。如果是,那么在用Java编码时哪个应该是一般选择?
答案 0 :(得分:1)
测量它。
构建解决方案,将其放入分析器并查看大部分计算时间用完的地方。一般来说,你不能明智地争论这个话题,你需要实验。
那就是说:在98%的情况下,你最好编写可读的OO代码。如果结果太慢,请缩小导致问题的方法(使用分析器)并尝试更快地使该方法。不要开始编写丑陋的代码,希望它可能比漂亮的代码更快。
答案 1 :(得分:0)
数组的问题在于它们假设大图的内存浪费很大,通常在节点之间实现很少的链接。
您获得的性能提升不仅取决于数据结构,还取决于您在其上执行的图形和操作类型。
E.g。在阵列实现上删除节点可能非常昂贵。
答案 2 :(得分:0)
是的,有时图表比数组更快。基本上有时它取决于您的要求。有时如果你使用数组是最好的选择,有时候是图表。 java中有许多可用的集合。像链表,arraylist,vector,doublelinkedlist等。所有的集合在java中都很快。您只需选择符合您要求的最佳可能性......