标签: 时间复杂度
共找到了30个结果
平衡二叉树(AVL)的实现代码和算法复杂度
下面我们将上一篇分享中演示的平衡二叉树构建示例转化为 PHP 代码。 节点类 我们还是使用二叉链表来实现二叉树的存储,对应的节点...
平衡二叉树(AVL)的定义和实现原理
引子 上一篇我们介绍了二叉排序树,并且提到理想情况下,二叉排序树的插入、删除、查找时间复杂度都是 O(logn),非常高效,而且它...
二叉排序(查找)树的定义及实现
为什么要引入二叉排序树 我们前面已经介绍了很多数据结构,比如数组、链表、散列表等,数组查找性能高,但是插入、删除性能差,链表插入、...
PHP 字符串匹配函数 strstr 底层实现原理剖析
PHP 提供的字符串匹配函数多是单模式匹配,因此大多通过 KMP 算法实现,我们以 strstr 函数为例,简单对底层实现源码进行剖...
字符串匹配算法之 Trie 树的定义、实现及应用
介绍完树和二叉树的基本数据结构和算法之后,我们接着之前没讲完的字符串匹配算法。 Trie 树的定义 Trie 树,也叫「前缀树」...
字符串匹配算法之 BF 算法
今天开始,我们将花三篇文章的篇幅由浅及深地介绍几个字符串匹配算法,首先从最简单的字符串匹配算法 —— BF 算法说起,BF 是 Br...
散列表、散列函数和散列冲突
散列表 散列表(HashTable,也叫哈希表),是根据键(Key)直接访问在内存存储位置的数据结构。 其实现原理是:通过散列函...
索引查找(二):分块索引(数据库索引技术基础)
昨天给大家分享了线性索引中的稠密索引,并提到了稠密索引的缺点,进而引出今天的主题 —— 分块索引。 为了减少索引项个数,我们对数据...
二分查找
介绍完基本的排序算法后,今天我们来介绍一种常见的高效查找算法 —— 二分查找。 二分查找的引入 在介绍二分查找之前,对于基于数字...
快速排序
实现原理 归并排序算法虽好,但是不是原地排序算法,需要消耗额外的内存空间,今天我们要介绍的是常规排序里综合排名最高的排序算法:快速...
选择排序
今天继续介绍排序算法,选择排序。 实现原理 选择排序算法的实现思路有点类似插入排序,也分已排序区间和未排序区间。但是选择排序每次...
归并排序
实现原理 今天介绍比前面三个排序算法性能更好的排序算法,归并排序。 所谓归并排序,指的是如果要排序一个数组,我们先把数组从中间分...
插入排序
实现原理 今天继续介绍排序算法,插入排序。 插入排序的原理是:我们将数组中的数据分为两个区间,已排序区间和未排序区间。初始已排序...
冒泡排序
今天要给大家介绍的是基于选择的排序算法,常见基于选择的排序算法有冒泡排序、插入排序、选择排序、归并排序和快速排序,我们在选择排序算法...
复杂度分析和大O表示法
学习数据结构和算法要从复杂度分析说起。算法复杂度包括时间复杂度和空间复杂度,两者中又以时间复杂度相对重要,因为就 Web 应用而言,...