算法与数据结构理论(二)
}
数组&&链表
数组是内存中一串连续的内存地址,有一个内存管理器,可以随机访问任何一个数组下标的内存元素
Access: O(1)
Insert:平均O(n)
Delete:平均O(n)
由于数组不适合插入/删除,链表应运而生
没有一种数据结构是最好的,不然就不需要其他数据结构存在了
每种数据结构都有自己的优缺和特点
Access: O(n)
Insert:O(1)
Delete:O(1)
堆栈(Stack)&&队列(Queue)&&优先队列
优先队列实现的两种机制:
1、堆(二叉堆、二项堆、斐波拉契堆)
堆是什么?是一种特殊的完全二叉树,就像一棵树一样
2、二叉搜索树
堆的时间复杂度如下:
哈希表(HashTable) & 集合(Set)
- Hash Function
- Hash Collisions
- HashMap 与 HashSet 时间复杂度 O(1) 特点:速度快
- HashTree 与 HashTree 时间复杂度 O(log(n)) 特点:有一定的顺序