
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
java编程开发语言随着互联网的不断发展而被越来越多的程序员掌握,今天南昌达内IT培训就给大家简单介绍一下,java编程堆的概念与应用特点分享。
什么是堆?
堆是一种特殊的完全二叉树。完全二叉树的含义就是每层节点都完全填满,除了后一层外只允许右边缺少若干个节点。在JavaScript中通常用数组表示堆(按照广度优先遍历顺序)。
特性
所有的节点都大于等于它的子节点(大堆)
或者所有的节点都小于等于它的子节点(小堆)
左侧子节点的位置是2_index+1
右侧子节点的位置是2_index+2(也就是在左子节点的基础上+1)
父节点的位置是(index-1)/2
优点
高效、快速的找出堆的大值和小值,时间复杂度是O(1)
找出K个大、小元素
常用操作
插入
将值插入堆的底部,即数据的尾部
然后上移,将这个值和它父节点进行交换,直到父节点小于等于这个插入的值
大小为k的堆中插入元素的时间复杂度为O(logK)
删除堆顶
用数组尾部元素替换堆顶(直接删除堆顶会破坏结构)
然后下移,将新堆顶和它的子节点进行交换,直到子节点大于等于这个新堆顶
大小为k的堆中删除堆顶的时间复杂度为O(logK)
获取堆顶
返回数组的0项
获取堆大小
返回数组的长度
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。