时间:2021-05-28
本文主要记录的是C#各种集合操作的性能,下面的标记说明描述标记的时间,下面的表格对比各种集合各种操作的时间.
标记说明:
1.O(1) 表示无论集合中有多少项,这个操作需要的时间都不变,例如,ArraryLIst的Add()方法就O(1), 无论集合中有多少元素,在列表尾部添加一个新的元素的时间都是相同的.
2. O(n)表示对于集合中的每个元素,需要增加的时间量都是相同的,如果需要重新给集合分
配内存,ArrayList的Add()方法就O(n),改变容量,需要复制列表,复制的时间随元素的增加和线性增加.
3. O(log n)表示操作需要的时间随着集合中元素的增加和增加,但每个元素增加的时间不是
线性的.而是呈对数曲线,在集合中插入操作时,SortedDictionary<Tkey,Tvalue>就是
O(log n),而SortedList<Tkey,Tvalue> 就是O(n),这里SortedDictionary<Tkey,Tvalue>
要快的多.因为它在树形结构中插入元素的效率比列表高的多.
下表显示各种集合的操作时间:
注:如果单元格中有多个大O值,表示集合需要重置大小,该操作需要一定的时间
如果单元格内容是no,就表示不支持这种操作.
集合AddInsertRemoveItemSortFindList<T>如果集合必须重置大小就是O(1)或O(n)O(n)O(n)O(1)O(n log n)最坏情况O(n^2)O(n)Stack<T>(栈)Push(),如果栈必须重置大小,就是O(1)或O(n)noPop(),O(1)nononoQueue<T>(列队)Enqueue(),如果栈必须重置大小,就是O(1)或O(n)noDequeu(),O(1)nononoHastSet<T>(无序列表)如果栈必须重置大小,就是O(1)或O(n)
Add()
O(1)或O(n)
O(1)nononoLinkedList<T>(链表)AddLast(),O(1)AddAfter(),O(1)O(1)nonoO(n)Dictionary<Tkey,TValue>O(1) 或 O(n)noO(1)O(1)nonoSortedDictionary<Tkey,Tvalue>O(log n)noO(log n)O(log n)nonoSortedList<Tkey,Tvalue>无序数据为O(n),如果必选重置大小,到列表的尾部就是
O(log n)
noO(n)读写是O(log n),如果键在列表中,就是O(log n),如果键不在列表中就是O(n).nono声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
C#中遍历各类数据集合的方法,这里自己做下总结:1.枚举类型复制代码代码如下://遍历枚举类型Sample的各个枚举名称foreach(stringspinEn
在C#的List集合操作中,有时候需要查找到List集合中的最大值,此时可以使用List集合的扩展方法Max方法,Max方法有2种形式,一种是不带任何参数的形式
在asp.net开发中,经常会用到后台和前台的交互,就此总结了一点c#和javascript相互操作的方法1.在后台c#代码中调用jacascript的方法ja
由于最近和数据库打交道,需要用C#和SQLServer2005进行操作,就把近段时间内的最常用的操作做个总结。本人也是第一次用C#操作数据库,所以这三种典型用法
C#操作IIS方法集合如果在win8,win7情况下报错:未知错误(0x80005000)----见usingSystem;usingSystem.Collec