enter image description here

前言


PHP是非常流行的脚本语言!现在世界上数以万计的网络程序都有它的身影!而且它能力非凡!小到普通的个人博客、企业网站,大到电商平台、云计算!它都能身当重任!尤其是PHP新版本的发行--PHP7!带来的语言层面上健壮性和效率的优化,更是给这门语言的发展给了美好的铺垫!相信这门被很多人誉为“世界上最好的语言”的语言,在未来一定会发挥更大的潜力!

数据结构和算法是软件开发中非常重要的一部分!软件开发人员从很大意义上说就是要解决实际问题!而数据结构和算法就是开发人员的内功心法!

一门好的语言提供了凌厉的招式!而数据结构和算法可以让我们内功深厚!两者结合而精深者,就是所谓的“高手”!

比武较量的过程一定会同时用到“招式”和“内功”!我们使用创建程序来解决问题也是同样的道理!要很好的解决问题,创建出高效、优雅的程序来解决问题!一方面要求我们语言使用熟练!另一方面要求我们可以很好的掌握数据结构和算法的相关知识!

而这本书,就是要用好的招式--PHP7,融入内功心法--数据结构和算法!助你在精进的路上走的更好更快!成为真正的“高手”!

书中包含了我们原生实现的数据结构以及PHP内置的使用SPL构建的数据结构和算法!相信这些内容大家一定会喜欢!

本书一切都为了想要精进的你!无论你是PHP新手,还是PHP专家,相信本书都可以给你丰硕的收获!

来!让我们一起精进!

本书结构

第1章“数据结构和算法简介”,将介绍数据结构和算法的相关概念!带领大家认识不同的的数据结构!

第2章“算法天平:复杂度分析”,这一章我会带领大家来分析我们算法的优劣,将引入两个非常中昂哟啊哦的概念:时间复杂度和空间复杂度。并且会带领搭建认识大O表示法!这是一个很重要的概念!

第3章“数组”,这一章的主角是PHP的数组!我将会带领大家深入理解PHP数组,并定义和使用PHP数组,并举例实现一个数据结构!

第4章“链表”,本章主角是链表这种数据结构!我们将见识许多种类的链表结构!我们会通过大量的案例帮助大家来实现这种线性的存储结构!

第5章“栈”,本章主角是栈这种数据结构!演示了创建栈以及栈的元素操作,还举例说明栈的实用价值!

第6章“队列”,本章主角是队列这种数据结构,演示了队列的创建,以及队列中的元素的相关操作,还讨论了如何用队列解决实际问题,以及栈和队列的主要区别。

第7章“递归”,本章主角是递归!我们将从计算机程序的底层分析递归的本质!相信在这里,你会看到不一样的递归!

第8章“排序算法”,本章将一起探讨常用的排序算法,如冒泡排序、选择排序、插入排序、归并排序、快速排序,希尔排序和桶排序等,以及会对这些算法进行分析并提出改进方案!

第9章“集合”,本章主角是集合这种数据结构!我们会分析集合的相关概念和操作。

第10章“字典和散列表”,我们将深入讲解字典、散列表及的相关概念它们之间的区别。本章介绍了这两种数据结构的声明、创建和使用,探讨如何解决散列冲突,以及如何创建更高效的散列函数。

第11章“树”,树是我们讲解的一个重点内容!并给出相应的代码实现!重点讨论了二叉搜索树,包含了很多概念和算法内容,如BST树,AVL树,红黑树等。

第12章“图”,本章主角是图!这一章我会带领大家学习关于图的一大波先关术语!实现关于图最常用的算法!并理解非常重要的算法思想!

第13章“搜索算法”,本章将讨论常用的搜索算法,例如顺序搜索和二分搜索等。

第14章“高级算法进阶”,介绍了一些算法技巧和一些著名的算法思想,如贪心算法,动态规划等!

准备工作

你所需要的仅仅是最新的PHP版本(最低是PHP7.0)! 本书所有的代码都可以在命令行下执行!所以不需要web服务器的支持! 但是如果你想搭建更好的测试环境,推荐您搭建并使用以下环境:

  • PHP 7.x+
  • Nginx/Apache
  • PhpStorm/Zend Studio

读者对象

本书适合具有一定PHP基础例如掌握了PHP基础数据类型,控制结构和其他一些基本特性的开发人员! 并且想通过学习数据结构和算法来更好的应用PHP来解决实际问题!或者想有效的提高解决实际问题的能力,增强程序的效率继而使程序发挥最大效力的PHPer们!

排版约定

在本书中,你会发现一些不同的文本样式,用以区别不同种类的信息。下面举例说明。

代码段的格式如下:

class Node { //这里是属性和方法 }

如果我们想让你重点关注代码段中的某个部分,会加粗显示:

class Node { public $left; public $right; public $key; //其他方法 }

所有的命令行输入或输出的格式如下:

$ php XXXX

新术语和重点词汇以黑体标示。

enter image description here这个图标表示警告或需要特别注意的内容。

enter image description here这个图标表示提示或者技巧