
[英]What is faster collection.Insert(0, newItem) vs list.Add(newItem) + Sort in Winforms ListView C#?
[英]Add to list then sort vs FindLastIndex then insert
我有对属性排序的项目列表。 我想将另一个项目添加到列表中,但仍获得排序列表。 我看到2种简单的方法可以做到这一点,但是哪个更快/更好?
还是我不知道的另一种方式?
这是一些有趣的事实:
选项1:1)在列表中插入所有项目。 只需插入将占用O(1)。 2)通过某种排序算法对列表进行排序。 最快的最坏情况是O(n log n)。
选项2:1)查找。 使用二进制搜索,最坏的情况是O(log n),但不是您的情况:)(您使用FindLastIndex的情况是一个谓词:此方法是O(n)操作,其中n是数组的长度。)2)插入数字将为O(1)。
基本上,如果您只想在最后一个索引中添加项目,那么第二个选项肯定是更快和最好的选择。
我认为
使用FindLastIndex,然后在索引+ 1上插入项目
应该更好,因为在诉诸过程中,至少过程会遍历列表一次:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.