时间:2021-05-20
本文实例讲述了Java基于二分搜索树、链表的实现的集合Set复杂度分析。分享给大家供大家参考,具体如下:
在Java底层基于二叉搜索树实现集合和映射和Java底层基于链表实现集合和映射中以二分搜索树和链表作为底层实现了集合Set,在本节就两种集合类的复杂度分析进行分析:
测试内容:Java底层基于二叉搜索树实现集合和映射和Java底层基于链表实现集合和映射中使用的书籍。
测试方法:测试两种集合类查找单词所用的时间
结果:BSTSet的速度比LinkedListed的速度快
在基于二叉搜索树的情况下,增加、查询、删除的与二叉搜索树的深度有关,每次操作均为从根节点到某一一支子树的叶子节点之间进行操作,时间复杂度为0(h),h表示二叉搜索树的高度(层数)。
二叉搜索树复杂度如下:
下面对n与h关系进行推导:
2.1.1 采用满二叉树的情况进行分析(最优情况)
采用满二叉树(每个节点都有左右节点,除了叶子节点)来进行分析的原因为满二叉树是一种极端情况,如下图:
从上图中关于h层总共有多少个节点有如下推导:
假设节点个数为n个则有如下关系:
针对都是log级别的关系,底数是多少不影响它是log级别的则有:
2.1.2 单个孩子情况----二叉搜索树最坏情况(节点数等于其高度)
比如:下面这种二叉搜索树
对于这种只有单个孩子的情况,此时二叉搜索树退化成了链表,此时的时间复杂度为O(n)。
2.2.1 logn和n的差距
推荐是最好的支持,关注是最大的鼓励。亲爱的朋友,很荣幸在园子里遇到您。
本节涉及的源码地址为https://github.com/FelixBin/dataStructure/tree/master/src/SetPart
更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Java底层基于链表实现集合和映射--集合Set操作。分享给大家供大家参考,具体如下:在Java底层基于二叉搜索树实现集合和映射中我们实现了底层基
本文实例讲述了java基于链表实现队列。分享给大家供大家参考,具体如下:在开始栈的实现之前,我们再来看看关于链表的只在头部进行的增加、删除、查找操作,时间复杂度
C语言数据结构中二分查找递归非递归实现并分析前言:二分查找在有序数列的查找过程中算法复杂度低,并且效率很高。因此较为受我们追捧。其实二分查找算法,是一个很经典的
C++中二分查找递归非递归实现并分析二分查找在有序数列的查找过程中算法复杂度低,并且效率很高。因此较为受我们追捧。其实二分查找算法,是一个很经典的算法。但是呢,
前言这篇文章是介绍二叉树和二分搜索树,然后通过PHP代码定义一下二分搜索树的节点,使用递归思想操作向二分搜索树添加元素,然后实现了递归判断二分搜索树上是否包含某