PHP 归并排序(Merge Sort)

2020-12-12
阅读 3 分钟
2k
​归并排序 时间复杂度属于 O(nlogn) 级别的,相比于 O(n^2) 级别的排序算法,在处理大的数据量时,它的优势非常明显,下面通过原理图和代码演示介绍归并排序是如何实现 O(nlogn) 时间复杂度级别的。

HTTP 协议(包体的传输方式&缓存的工作原理)

2020-12-11
阅读 5 分钟
2.3k
这篇文章主要了解一下 HTTP 协议中定长包体传输的格式和不定长包体传输的格式,然后简单介绍一下 HTTP 协议中缓存的工作原理和应用场景。

数据结构-PHP 字典树(Trie)的实现

2020-12-10
阅读 4 分钟
2.1k
​这篇文章介绍一下字典树的实现原理,又称单词查找树、Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。

链表的翻转&判断链表是否有环

2020-12-09
阅读 3 分钟
2.2k
​通过学习 链表的翻转 和 判断链表是否有环 这两个简单的例子加深对链表这种数据结构的理解。1.链表翻转1.1 链表翻转原理图1.2 链表翻转代码 {代码...} 演示输出如下图:2.判断链表是否有环2.1 链表环示意图2.2 问题分析在遍历链表的时候可以维护 快 和 慢 两个指针赋值,可以将这两个快慢插设为 1,当遍历到环上面的时...

数据结构-PHP 哈希表(Hash Table)的实现

2020-11-16
阅读 11 分钟
4.4k
​这篇文章主要介绍一下哈希表(Hash Table)的实现原理,哈希表(Hash Table) 也叫散列表,它通过把关键码值(key-value)映射到表中一个位置来访问,以加快其查找的速度。这个映射函数叫做哈希函数,存放记录的数组叫哈希表(Hash Table)。

数据结构-PHP 平衡二叉树(AVL)的平衡原理

2020-11-05
阅读 18 分钟
1.2k
这篇文章主要介绍一下 平衡二叉树(AVL),对于 二分搜索树 来说,如果树上的 元素 是顺序 添加的,会导致数据退化成一个 链表,这样就会造成很严重的性能问题,此时就需要在 二分搜索树 的基础上,保证元素插入时平衡,在了解 AVL 之前,需要您对 二分搜索树 有一定的了解,可以参考之前的文章。

数据结构-PHP 并查集(Union Find)

2020-11-02
阅读 3 分钟
2.3k
这篇文章主要介绍一下 并查集,并查集 支持合并(Union) 和 查询(Find)两种操作,其中 合并(Union) 表示把两个不相交的集合合并为一个集合,查询(Find) 表示查询两个元素是否在同一个集合中。

数据结构-PHP 字典树(Trie)的实现

2020-11-01
阅读 4 分钟
1.5k
​这篇文章介绍一下字典树的实现原理,又称单词查找树、Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。

数据结构-PHP 线段树的实现

2020-10-31
阅读 10 分钟
1.7k
线段树是基于区间的统计查询,线段树是一种 二叉搜索树,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN),线段树是一颗 平衡二叉树。

数据结构-PHP 输出数组中出现频率最高的前 k 个

2020-10-30
阅读 14 分钟
1.6k
​这篇文章主要是通过一个问题实现过程,选择合适的数据结构,结合之前介绍过的 基于二分搜索树实现的映射(Map) 和 最小堆两种数据结构,可以将问题实现过程的时间复杂度降低。

数据结构-PHP 优先级队列(最大堆)的实现

2020-10-29
阅读 9 分钟
1.4k
对于 普通队列,数据元素是 First In First Out,而对于 优先队列 是出队顺序和入队顺序无关,和优先级相关,其特点是 动态的 选择优先级最高的出队。

数据结构-PHP 映射(Map)实现

2020-10-27
阅读 9 分钟
4.7k
这篇文章主要介绍如何实现 映射(Map),映射是一个存储(键,值)数据对的数据结构(key-value),它的特点是根据键(key)去寻找值(value),下面主要介绍如何使用 链表 去实现 映射(Map)和使用 二分搜索树(Binary Search Tree) 去实现 映射(Map)。

数据结构-PHP 二分搜索树的层序遍历(队列实现)

2020-10-26
阅读 8 分钟
1.5k
​前面文章介绍了二分搜索树的 前序遍历、中序遍历、后续遍历,这篇文章主要介绍一下如何使用 队列 实现二分搜索树的 层序遍历。1.队列1.1 队列的特点队列(Queue) 是一种线性结构。只能从一端 tail(队尾) 添加元素,从另外一端 front(队首) 取出元素。是一种 First In First Out(FIFO),即 先进先出 的结构。1.2 队列的...

数据结构-PHP 压栈遍历二分搜索树

2020-10-25
阅读 7 分钟
1.6k
前面写了一篇的文章,实现的方法是用的递归思想遍历,这篇文章主要介绍一下如何使用 压栈 的思想来遍历二分搜索树。1.栈为了更好的结合压栈的思想,下面先来介绍一下 栈 数据结构的知识:1.1 栈的特点栈是一种线性数据结构。栈只能从一端添加数据,也只能从同一端取出元素,每次删除的元素都是最后入栈的元素。入栈的元...

数据结构-PHP 实现二分搜索树

2020-10-23
阅读 8 分钟
1.4k
这篇文章是介绍 二叉树 和 二分搜索树,然后通过 PHP 代码定义一下 二分搜索树 的节点,使用递归思想操作向二分搜索树添加元素,然后实现了递归判断二分搜索树上是否包含某个元素,最后分别实现了前序遍历、中序遍历、后序遍历 二分搜索树。

PHP 实现递归删除链表元素

2020-10-22
阅读 7 分钟
1.3k
这篇文章介绍一下 递归,递归的本质是将原来的问题转化为更小的同一个问题,解决这些更小问题的过程。下面通过两个递归的例子帮助学习对递归的理解。

二分搜索树介绍&PHP 定义节点

2020-10-22
阅读 2 分钟
1.9k
这篇文章是介绍 二叉树 和 二分搜索树,然后通过 PHP 代码定义一下 二分搜索树(Binary Search Tree) 的节点。1.二叉树1.1 二叉树图示1.2 二叉树节点定义 {代码...} Tips:二叉树每个节点最多有两个儿子,每个节点最多有一个父亲。1.3 二叉树的特点二叉树具有天然的递归结构,每个节点的左儿子或右儿子也是 二叉树。二叉...

PHP通过带尾指针的链表实现'队列'

2020-10-21
阅读 4 分钟
1.5k
这篇文章是展示通过 PHP 语言实现一种带尾指针的链表,然后通过链表来实现队列,其中链表的头元素 head 是用于列队出队的,它的时间复杂度 O(1),若在 head 的基础上实现链表尾部入队时间度为 O(n),为了降低入队操作的时间复杂度,可以给链表维护一个带有尾指针的变量 tail,这样每次入队的时候直接操作 tail,出队的时...

数据结构-PHP通过链表类对象实现“栈”

2020-10-21
阅读 6 分钟
1.3k
这篇文章是展示如何使用PHP语言实现的链表类(LinkedList),然后通过链表来实现的 栈(Stack) 只能从栈顶添加元素,也只能从栈顶取出元素,是一种 Last In First Out(LIFO),即 后进先出 的结构。

数据结构-PHP 类对象实现 ‘链表’

2020-10-21
阅读 5 分钟
1.9k
这篇文章是展示如何使用PHP语言实现 链表(Linked List) 这种数据结构,Linked List 是一种最简单的动态数据结构,学习 Linked List 可以帮助更深入地理解指针和递归,可以用来组织更复杂的数据结构,它的特点是数据存储在 节点(Node) 中,节点中还存储了指向下一个节点的引用变量,Linked List 不需要处理固定容量的问题。

数据结构-PHP通过 Array 类对象实现 '队列'

2020-10-20
阅读 6 分钟
1.9k
这篇文章是展示如何使用PHP语言实现队列(Queue)这种数据结构,Queue也是一种线性结构,相比 Array 而言,Queue 对应的操作是 Array 的子集,只能从一端(队尾)添加元素,也只能从另外一端(队首)取出元素,是一种 First In First Out(FIFO),即 先进先出 的结构。

数据结构-PHP 实现 '栈' 结构匹配花括号有效性

2020-10-20
阅读 7 分钟
1.2k
这里是一个 栈 类,它的继承了数组类的方法,通过数组的增删查封装的一个 栈 类,实现了 入栈(push)、出栈(pop)、查看栈顶(peek) :

数据结构-PHP通过 Array 类对象实现 "栈"

2020-10-19
阅读 5 分钟
1.4k
这篇文章是展示如何使用PHP语言实现栈(Stack)这种数据结构,Stack也是一种线性结构,相比 Array 而言,Stack 对应的操作是 Array 的子集,只能从一端添加元素,也只能从一端取出元素,是一种 Last In First Out(LIFO),即 后进先出 的结构,Stack 的应用很多,如 'undo 操作(撤销)'、'程序调用系统栈'。

数据结构-JAVA实现数组

2020-10-19
阅读 8 分钟
2.6k
Tips:当容量满了的时候可能存在一直触发 resize() ,使得时间复杂度变为 O(n),这种情况称为复杂度震荡,解决办法是,当 size 小于等于 1/4 容量的时候才缩小容量。

数据结构-PHP实现Array

2020-10-19
阅读 6 分钟
2k
这篇文章是展示如何使用PHP语言实现Array这种数据结构,有人可能会问为什么要用 PHP 而不用其他语言实现呢?这里我想说明一下,很多 PHP 程序员缺乏数据结构和算法相关的基础知识,这里主要是想通过 PHP 实现数据结构的过程来学习数据结构的原理,还请读者勿要纠结使用什么语言了,了解清楚原理之后,读者可以通过自己的...