Tag: 算法
237 total results found
PHP 数组底层实现原理(一)
数组是 PHP 中非常强大、灵活的一种数据类型,和 Java、C 等静态语言不同,我们在初始化 PHP 数组的时候不必指定大小和存储...
哈希算法及其应用场景
哈希算法的概念和特性 我们前面分享了散列表、散列函数和散列冲突,其实也可以译作哈希表、哈希函数和哈希冲突,是一个意思。哈希算法简单...
散列函数设计与散列冲突处理
昨天我们分享了散列表的实现,对 PHPer 来说,应该对散列表很熟悉,因为我们每天用的数组就是基于散列表实现的。比如 $arr['t...
散列表、散列函数和散列冲突
散列表 散列表(HashTable,也叫哈希表),是根据键(Key)直接访问在内存存储位置的数据结构。 其实现原理是:通过散列函...
索引查找(三):倒排索引(搜索引擎技术基础)
百度、Google 等搜索引擎为我们日常查找信息带来了巨大的方便,你是否思考过搜索引擎是如何从海量 HTML 文档中通过关键词查找资...
索引查找(二):分块索引(数据库索引技术基础)
昨天给大家分享了线性索引中的稠密索引,并提到了稠密索引的缺点,进而引出今天的主题 —— 分块索引。 为了减少索引项个数,我们对数据...
索引查找(一):稠密索引(数据库索引技术基础)
前面我们提到的二分查找适用于有序线性表的查找,此外针对二分查找还有升级版的插值查找,以及利用斐波那契原理进行查找的斐波那契查找,感兴...
二分查找案例剖析:IP 地址对应城市查询
今天我们来分享一个二分查找的实际使用案例 —— 根据用户的 IP 地址,获取用户所在的城市。 记得我以前面试的时候,就遇到过这个问...
二分查找的变形版本(下):在给定序列中查找第一个大于等于或最后一个小于等于给定值的元素
我们接着昨天的话题,继续讨论二分查找的变形版本。 二分查找的第三个变形版本:在给定排序序列中查找第一个大于等于给定值的元素。 有...
二分查找的变形版本(上):从给定序列中查找第一个或最后一个匹配元素
日常开发过程中,除了我们昨天讲到的正常的二分查找,还有很多二分查找的变形版本,今天开始,我们就来给大家一一介绍这些变形版本。 符合...
二分查找
介绍完基本的排序算法后,今天我们来介绍一种常见的高效查找算法 —— 二分查找。 二分查找的引入 在介绍二分查找之前,对于基于数字...
二叉树的遍历及代码实现
二叉树的遍历指的是从根节点出发,按照某种次序依次访问二叉树中的所有结点,使得每个结点被访问一次且仅被访问一次。 有多种方式可以遍历...
二叉树的存储
前面我们聊到树和二叉树的定义和特性,树这种结构不能简单通过线性表的前后关系来存储,在线性表中,一个节点只有至多一个前驱节点和至多一个...
二叉树的定义及其特性
在继续介绍其它字符串匹配算法 Trie 树之前,我们先来讲讲树这种数据结构,因为 Trie 树也是一棵树。树比前面讲的数据结构(数组...
PHP 数组排序函数 sort 底层实现分析
前面我们已经介绍了线性表(即线性数据结构,如数组和链表)的常规排序算法,包括冒泡、插入、选择、归并和快排,其中综合性能最好的就是快排...