列表的大O调整大小

om4*_*987 2 c# algorithm big-o

这个问题适用于所有语言,但让我坚持使用C#

var names = new List<string> {"Jerry", "Cosmo", "Elaine", "George"};
Run Code Online (Sandbox Code Playgroud)

这是我的编译时间列表.如果我决定在其中插入记录,那么下面的.Net将长度从4增加到8.

names.Insert("Newman");
Run Code Online (Sandbox Code Playgroud)

上面这个插入方法的Big-O会变成O(N)吗?哪个N作为列表的长度?如果是的话,大多数面试官真的关心吗?

编辑

让我们说我们正在插入1000条记录.长度将在4,8,16,32加倍....所以插入复杂度将是Log(N)正确吗?

meo*_*dog 5

特定插入操作的复杂性(其中列表的大小加倍)是O(N).但是,摊销的复杂性仍然是O(1),因为列表N / 2之前的元素大小没有加倍,因此每次插入的平均操作数仍然是不变的.面试官可能希望你意识到这种差异.