常用数据结构特征以及操作时间复杂度
数据结构 | 类型及备注 | 插入和删除 | 查找 |
---|---|---|---|
Array | 顺序存储的线性表、定长 | 不支持(这里的插入与删除指会更改表长的行为) | O(N) |
LinkedList<T> | 链式存储的线性表、不定长 | O(1) | O(N) |
List<T> | 顺序存储的线性表、不定长、动态扩容 | O(N),结尾则是O(1) | O(N) |
Stack<T> | 栈、不定长、动态扩容 | O(1) | 只能访问栈顶 |
Queue<T> | 队列、不定长、动态扩容 | O(1) | 只能访问队列头部 |
Dictionary<K,T> | 保存键值对、使用开散列法、不定长、动态扩容、长度总为质数 | O(1) | O(1) |
SortedList<K,T> | 保存键值对、内部使用数组实现、保持有序、不定长 | O(logN) | O(logN) |
SortedDictionary<K,T> | 保存键值对、内部使用红黑树实现、保持有序、不定长 | O(logN) | O(logN) |
HashSet<K> | 使用开散列法、不定长、动态扩容、长度总为质数、是不含值的字典,故复杂度和它完全相同 | O(1) | O(1) |