zoukankan      html  css  js  c++  java
  • C++ 数组、链表和二叉树的比较

    数组:按序号访问元素,连续存储,元素可以有序、也可以无序,用下标来定位元素,元素的数量确定(有上限),按下标访问很快,插入和删除元素、排序的开销比较大(元素的移位操作),数组元素无序时,元素的排序速度比较慢(依次比较),数组元素有序时,元素的查找速度比较慢(二分查找,比无序时快)。

    链表:插入、删除方便;元素数量不受限制。非连续存储,元素可以有序、也可以无序;查找、访问元素的开销比较大:依次比较每一个元素。元素的数量不受限制。插入和删除元素、排序的开销比较小(修改指针域)。

    二叉树:插入、删除方便,查找快。非连续存储,元素一定是有序(建树时判定在左子树、还是右子树上需要有依据),查找、访问元素的开销比较小(比较次数不超过二叉树的深度),元素的数量不受限制,插入和删除元素、排序的开销比较小(修改指针)。

    数组、链表、二叉树各自适用的场合

    数组:数据集中元素的数量基本可以确定;不需要频繁的插入、删除。

    链表:需要频繁的插入、删除元素;不可预知元素的数量范围。

    二叉树:需要频繁的插入、删除、查找元素。

    发挥二叉树的优势:必须降低二叉树的深度,同样的深度,完全二叉树能够保存的元素数量最多。但除非在建树时,就按照顺序添加节点,否则构造的难度大,退而求其次:建立平衡二叉树。每个节点,它的左子树与右子树的深度之差不超过1。

    对大规模的元素序列进行排序,比如有几万个、甚至更多的元素

    用数组:频繁的数组元素交换

    链表:越往后,插入一个元素需要的比较次数与已排序元素的数量成线性增加。

    平衡二叉树:越往后,插入一个元素需要的比较次数与已排序元素的数量按对数关系增加。

    参考:https://jingyan.baidu.com/article/d5c4b52b1e42d99a560dc588.html

  • 相关阅读:
    2011年上半年软考信息系统项目管理师顺利通过了。
    技术工程师之歌
    大家都很注重能力的时候,我却在努力提高学历
    新的开发团队配合模式,适合小型团队
    研发部的四套马车
    mysql给root开启远程访问权限,修改root密码
    js客户端判断文件大小限制上传
    metro 微博api开发,post请求
    VS2010在C#头文件添加文件注释的方法
    android ListView 常见问题 之 高度问题
  • 原文地址:https://www.cnblogs.com/zhibei/p/13371223.html
Copyright © 2011-2022 走看看