C#跟踪列表中的索引更改

时间:2014-09-30 11:53:43

标签: c# algorithm list

我正在编写一个对List执行某些操作的方法。在每次迭代期间,算法将删除,添加或移动现有项目(因此列表正在更改,一次一个项目)。移动操作将使用通过以下逻辑实现的扩展方法执行:

T item = base[oldIndex];
base.RemoveItem(oldIndex);
base.InsertItem(newIndex, item);

此外,在每次迭代期间,将查询列表中的一个项目以查找其当前索引。 List.IndexOf(item)是一个昂贵的操作(O(n)),我想知道是否有办法改善这个操作的性能。我想保留索引的字典,但随后每次插入和删除一个项目,我将需要更新它后面的O(n)项的索引,所以这没有帮助。

注意:我认为List.InsertItem和List.RemoveItem无论如何都需要O(n),但我特别询问如何在这种情况下提高IndexOf操作的性能。

由于

0 个答案:

没有答案