当前位置: 首页 > 后端技术 > PHP

数据结构和算法概述

时间:2023-03-30 00:38:49 PHP

简介什么是数据结构?如果你翻阅不同的教科书,你会看到各种各样的描述。事实上,在计算机科学界还没有关于这个问题的标准定义。在计算机科学中,数据结构(英语:datastructure)是计算机中存储和组织数据的方式(维基百科)。客户找到他们想要的书的最快方法?方法一:随便放书很方便,新书直接插在空位上。但是查找很不方便。如果没有这本书,需要翻遍整个书架方法二:按照书名字母顺序排列新书每个区域指定放置某一类书籍;在每个类别中,按照书名的字母顺序大大减少了查找和插入的工作量,但是无法预测每个类别中会有多少本书,容易造成空间浪费数字印刷问题:写程序实现一个函数PrintN,这样可以传入一个正整数N的参数,依次打印1到N的所有正整数//versiononefunctionPrintN($n){for($i=1;$i<=$n;$i++){echo"{$i}\n";}}//版本2函数PrintN($n){if($n>0){PrintN($n-1);回声“{$n}\n”;}}当输入N为100、1000、10000...,并且N越来越大时,版本1和版本2有什么区别??(debug_backtrace)一元多项式计算题:一元多项式的标准表达式可以写为:f(x)=$a_0$+$a_1$x+...+$a_{n-1}$$x^{n-1}$+$a_n$$x^n$。现在给定一个多项式阶数n,所有的系数$\{a_i\}^n_{i=0}$都存储在数组a[]中。请编写一个程序计算这个多项式在给定点x处的值functionf($n,$a,$x){$p=$a[0];对于($i=1;$i<=$n;$i++){$p+=$a[$i]*pow($x,$i);}返回$p;}$x=2;$n=1;$a=[];for($i=0;$i<=$n;$i++){$a[$i]=$i+1;}$fn=f($n,$a,$x);回声$fn。"\n";通过提高公因数x来减少乘法运算的次数,并将多项式重写为:f(x)=$a_0$+x($a_1$+x(...($a_{n-1}$+x($a_n$))...))函数f2($n,$a,$x){$p=$a[$n];对于($i=$n;$i>0;$i--){$p=$a[$i-1]+$x*$p;}return$p;}解决问题的效率解决一个很简单的问题,往往会有多种方法,不同方法之间的效率可能会有很大差异。解决问题方法的效率与数据的组织方式、空间的利用效率、算法的巧妙程度有关。《PHP面试问答》https://github.com/colinlet/PHP-Interview-QA欢迎star关注~~结合PHP面试实际,总结自己遇到的问题,以及网上其他人遇到的问题,并尽量提供简明准确的答案包括网络、数据结构与算法、PHP、Web、MySQL、Redis、Linux、安全、设计模式、架构、面试等部分数据结构定义数据结构的定义首先应该包括计算机中数据对象的组织——这类似于书籍的放置方式。而且,数据对象必须与添加到数据对象的一系列操作相关联,就像我们将书放在书架上以找到想要的书,或者插入一本新购买的书一样。在讨论数据结构时,我们关心的是数据对象本身以及它们在计算机中的组织方式,以及与它们相关的一组操作以及实现这些操作的最有效算法。关于数据对象在计算机中的组织,有两个概念:数据对象集合的逻辑结构,和数据对象集合在计算机中的物理存储结构抽象数据类型抽象数据类型(AbstractDataType)是一种一种“数据结构”,这种描述是“抽象的”。数据类型描述内容:数据对象集、与数据集关联的操作集。摘要:描述数据类型的方法不依赖于具体实现,即数据对象集合操作集的描述与存储数据的机器、数据存储的物理结构、以及实现操作的算法和编程语言。抽象是计算机解决问题的基本方式和重要手段,使一种设计可以适用于多种场景。算法定义算法(algorithm)来自9世纪的波斯数学家,他们在数学中提出了算法的概念。算法是一组有限的指令,它接受一些输入(可选),产生一个输出,并且必须在有限数量的步骤后终止。算法不是程序。算法比程序更抽象,强调做什么而忽略细节。这样做的好处是整体思路清晰易懂,形成模块化风格。算法复杂度度量和比较算法主要包括以下两个指标:空间复杂度S(n):根据算法编写的程序在执行时占用的存储单元长度算法在Time-consuming耗时长度分析一般算法效率:最坏情况复杂度$T_{worst}$(n)平均复杂度$T_{avg}$(n)《数据结构与算法概述》