各种数据结构性能的比较
来源:互联网 发布:正版游戏 知乎 编辑:程序博客网 时间:2024/06/06 20:28
数据结构包括数组、链表、栈、二叉树、哈希表等等
数据结构优点缺点数组插入快查找慢、删除慢、大小固定有序数组查找快插入慢、删除慢、大小固定栈后进先出存取其他项很慢队列先进先出存取其他项很慢链表插入、删除快查找慢二叉树查找、插入、删除快算法复杂(删除算法)红黑树查找、插入、删除快算法复杂hash表存取极快(已知关键字)、插入快删除慢、不知关键字时存取很慢、对存储空间使用不充分堆插入快、删除快、对大数据项存取快对其他数据项存取慢图依据现实世界建模算法有些复杂AVL树查找、插入、删除快算法复杂
总结:
通用数据结构:数组,链表,树,哈希表
它们被称之为通用的数据结构是因为它们通过关键字的值来存储并查找数据,这一点在通用数据库程序中常见到(栈等特殊结构正好相反,它们只允许存取一定的数据项)。
通用数据结构可以完全按照速度的快慢来分类:数组和链表是最慢的,树相对较快,哈希表是最快的。
但并不是使用最快的结构永远是最好的方案。这些最快的结构也有缺陷,首先,它们的程序在不同程度上比数组和链表的复杂;其次,哈希表要求预先知道要存储多少数据,数据对存储空间的利用率也不是非常高。普通的二叉树对顺序的数据来说,会变成缓慢的O(N)级操作;而平衡树虽然避免了上述的问题,但是它的程序编制起来却比较困难。
数组在下列情况下很有用:1数据量较小 2数据量的大小事先可预测 3如果存储空间足够大的话,可以放松第二条,创建一个足够大的数组来应付所有可以预见的数据输入。
如果插入速度很重要的话,使用无序数组。如果查找速度很重要的话,使用有序数组,并用二分查找。数组元素的删除总是很慢,这是由于为了填充空出来的单元,平均半数以上的数组元素要被移动。在有序数组中的遍历是很快的,而在无序的数组不支持这种功能。
如果需要存储的数据量不能预知或者需要频繁地插入删除数据元素时,考虑使用链表。当有新的元素加入时,链表就开辟新的所需要的空间,所以它甚至可以占满全部可用内存;在删除过程中没有必要像数组那样添补“空洞”。
0 0
- 各种数据结构性能的比较
- 各种数据结构的比较
- 南邮数据结构实验四----各种内排序算法的实现及性能比较
- 数据结构之各种排序的比较
- 数据结构之各种排序的比较
- 数据结构之各种排序的比较
- 数据结构----各种排序算法的比较
- 数据结构的各种排序算法稳定性比较
- 数据结构----各种排序算法的比较
- 各种数据结构的使用和比较
- 各种排序方法的性能比较
- 各种排序算法的性能比较
- C#中各种数组的性能比较
- 各种排序算法的性能比较
- 各种排序算法的时间性能比较
- JavaScript各种排序的性能比较
- 各种排序算法性能之间的比较
- java各种锁机制的性能比较
- java web项目利用Filter进行单点登录的简单实现
- WIN7 64位配置X86 MySQL 数据源
- 那些闪亮的日子
- 花生壳不免费了,除了花生壳的选择
- Lucene 4.0 TieredMergePolicy
- 各种数据结构性能的比较
- 按照严版伪代码写线性表的顺序实现
- Linux上ipv6的RA配置
- ubuntu+apache2+php5+mysql5.0的安装(apt-get安装路径)
- JNI 数据类型
- 公司只能给你位置,不能给你未来
- linux命令学习
- HDFS中的集中缓存(Centralized Cache Management in HDFS)
- Oracle 触发器 插入,更新,删除,数据同步,两表同步