由于添加项目,我很难确定哪个列表的时间复杂度较低。列表是否比2D数组少? 我想用它代表一个带有大约1000个顶点的无向和未加权的图形。它用于存储顶点。
List<Integer> list
VS
int[][] list2
答案 0 :(得分:0)
如果您在谈论列表/数组中巨大数量的元素,您只会关心。
集合框架提供的类;像ArrayList那样添加一定的性价格标签;与普通旧阵列相比。所以,当你必须计算1000万个数字的东西时;你最好使用double []而不是ArrayList。
但对于大多数其他用例,集合只是提供了更丰富的界面;这意味着,如果您避免使用数组而是转向某些集合类,则可以更轻松地“优化”代码的可读性和可维护性。在现实世界中,这些属性实际上比使用这些更高级的抽象层的运行时成本更重要。
只是为了确实回答这个问题:我认为ArrayList的“O cost”与数组相同;因为在ArrayList的big-O中会有一些“x n”;和数组将是“y n”; x大于y。
因此,从概念上讲,它们属于同一类;但从实际角度来看,名单更贵。