【发布时间】:2025-12-07 16:25:01
【问题描述】:
我正在从double 数组中找到所有选择,那么哪种数据结构应该有效地使用List 或Array 来存储结果?
我想通过不按内存运行来提高效率。
double[] n = new double[]{2,1,6,5,3,8,1}; # could be n number of elements
如果我选择
数组: 我可以先声明
result数组以将pick 元素存储为n的总大小,然后在找到pick 之后我将resize它。
列表: 或者我可以使用列表,但我担心的是“列表将在每次列表变满时添加额外的内存”,因此会花费运行时间。
那么我应该使用list 还是array,因为在这里我知道result 的“最大尺寸”是多少?
【问题讨论】:
-
double[] 不是 double()....
-
不能使用链表吗?这样,您可以为 Add() 和 Remove() 留出固定的时间。当然,它伴随着寻找元素的 O(n) 复杂度成本。
-
@Frenchy 抱歉没有收到您的问题
-
选择适合您的需求。内存不应该是你首先关心的问题,特别是列表内存开销不应该那么大。如果你想迭代你的集合,选择
IEnumerable,如果你需要基于索引的数组或列表。如果要添加/删除项目,请选择列表。 -
您不必要地担心。
List不会“每次都添加额外的内存”。List翻倍增长。Count属性告诉您列表中有多少项目,Capacity告诉您它可以容纳多少。添加到List的摊销成本为 O(1)。如果您担心分配时间并且知道列表将容纳多少项目,您可以通过将容量参数传递给构造函数来预先分配列表。
标签: c# arrays list optimization data-structures