添加到列表然后排序vs FindLastIndex然后插入

时间:2017-05-24 07:15:14

标签: c# list

我有一个列出属性的项目列表。我想在列表中添加另一个项目,仍然可以获得一个排序列表。我看到两种简单的方法可以做到这一点,但哪种更快/更好?

  • 将项目添加到列表,然后对列表进行排序或
  • 使用FindLastIndex然后在index + 1
  • 上插入项目

或者还有另一种我不知道的方式吗?

2 个答案:

答案 0 :(得分:2)

以下是一些有趣的事实:

  

选项1:1)插入列表中的所有项目。只需插入即可   O(1)。 2)通过一些排序算法对列表进行排序。最快的情况   是O(n log n)。

     

选项2:1)查找。使用二进制搜索,最坏的情况是O(log n),但不是你的情况:)(你的   使用FindLastIndex这是一个谓词:这个method是一个   O(n)操作,其中n是数组的长度。)2)插入数字   将是O(1)。

基本上如果你想在最后一个索引中添加项目第二个选项肯定是更快,最好的选择。

答案 1 :(得分:0)

在我看来,我认为

  
    

使用FindLastIndex然后在index + 1

上插入项目   

应该更好,因为在诉诸程序时,至少有一个进程将遍历列表一次:)