数据结构与算法
makingBug
Coding is happiness
展开
-
初始化堆的时间复杂度证明O(N)
对于一棵如图所示的完全二叉树,树的高度为H。在构建初始堆的过程中,从中间元素自底向上的构造,在最坏的情况下每一次该元素都要与左右孩子比较并交换,交换后的位置同样还要再与孩子比较并交换(如果有孩子的话),直至该节点该值达到叶子节点,那么很明显该节点最多需要比较并交换的次数为该节点当前的高度值(令叶子节点的高度值为0)。最坏的情况下是从非叶叶子节点开始比较,并且每次比较的时都需要进行一个递归的交换,并且最终交换到叶子节点,对于每一个节点而言最坏的操作数等于当前节点所处于的高度。下面是详细的推导过程那么原创 2020-09-15 16:03:21 · 2109 阅读 · 0 评论 -
二分查找算法
什么是查找算法对于一个数组或者是链表,如果想要知道其中是否包含我们需要的target值,可以进行一次线性的查找,每个元素逐个比对来确定是否包含target,这就是一个最简单的查找算法。时间复杂度为O(N)。什么是二分查找算法假设给定的数组中的元素是一个有序的状态,比如是单调不递减或者是单调不递增的状态,对于这种情况可以使用二分查找来完成。即二分查找需要满足两个条件:数组存储元素有序,单调性二分查找的具体过程以数组[0,1,2,3,4,5,6]为例。我们需要查找的目标值target是为2,具原创 2020-09-06 18:07:51 · 3390 阅读 · 2 评论