列表的大O调整大小

时间:2017-07-22 22:10:07

标签: c# algorithm big-o

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

var names = new List<string> {"Jerry", "Cosmo", "Elaine", "George"};

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

names.Insert("Newman");

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

修改

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

1 个答案:

答案 0 :(得分:5)

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