我们有一个包含>1000个项目的大List,这些项目具有大的类(相同类型)。列表被频繁地插入或删除。每次插入大约10到20到30个条目。对于每个项目,我使用快速搜索算法找到插入的准确位置。但是我想知道我是否将每个项目添加到列表的末尾,然后使用list进行排序。排序(我相信MS使用快速排序算法)那么它会更好:消耗更少的CPU像现在?我使用的是c#, . net Framework 2.0
这样的问题很少有一个通用的答案。这在很大程度上取决于你的场景。但这里有一个介于你提出的两个选择之间的中间建议:
排序要插入的项目列表(这需要根据您的描述排序10 - 30个项目)。然后,按顺序插入这些。注意,一旦找到插入第一项的位置,插入第二项的位置必须严格位于位置之后(依此类推,对于每个后续项),因此不需要重新从头开始搜索。在这种情况下,被插入的列表只需要搜索,因为它在每次插入后都会保持其顺序。