php面试问到数据结构 php数据库面试题( 四 )


array_merge(array1,array2,array3...); 用于把一个或多个数组合并成一个数组 。如果两个或更多个数组有相同的键名 。则最后的数组会覆盖其他数组 。如果向函数输入了一个数组,且键名是整数,则该函数会返回带有整数键名的新数组,其键名以0开始进行重新索引 。
array_merge_recursive(array1,array2,array3...); 用于把一个或多个数组合并为一个数组,该函数与array_merge()函数之间的不同是在处理两个或多个数组元素有相同的键名的情况下,array_merge_recursive()不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组 。如果您仅仅向 array_merge_recursive() 函数输入一个数组,结果与 array_merge() 相同 。
3. 数组的差集
array_diff(array1,array2,array3...); 函数用于比较两个(或更多个)数组的值 , 并返回差集 。该函数比较两个(或更多个)数组的值(key=value中的value),并返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2或array3等等)中的值 。
array_diff_assoc(array1,array2,array3...); 函数用于比较两个(或更多个)数组的键名和键值,并返回差集 。该函数比较两个(或更多个)数组的键名和键值,并返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的键名和键值 。
4. 数组的并集
array_intersect(array1,array2,array3...); 函数用于比较两个(或更多个)数组的键值,并返回交集 。该函数比较两个(或更多个)数组的键值,返回一个交集数组,该数组包括了所有在被比较的数组(array1)中,同时也在任何其他参数数组(array2 或 array3 等等)中的键值 。
array_intersect_assoc(array1,array2,array3...); 函数用于比较两个(或更多个)数组的键名和键值 , 并返回交集 。该函数比较两个(或更多个)数组的键名和键值,并返回一个交集数组,该数组包括了所有在被比较的数组(array1)中,同时也在任何其他参数数组(array2 或 array3 等等)中的键名和键值 。
七,数值的排序
array_multisort():对多个数组或多维数组进行排序
sort(): 以升序对数组排序
rsort(): 以降序对数组排序
asort(): 根据值,以升序对关联数组进行排序
ksort(): 根据键,以升序对关联数组进行排序
arsort(): 根据值,以降序对关联数组进行排序
krsort(): 根据键,以降序对关联数组进行排序
资料参考:
面试准备之【数据结构】1——图共有:邻接表,邻接矩阵
有向图独有:十字链表,边集数组
无向图独有:邻接多重表
一个一维数组存储图中顶点信息,一个二维数组(称为邻接矩阵)存储图中的边或弧的信息 。
设图G有n个顶点,则邻接矩阵是一个nxn的方阵,定义为:Arc[i][j]=1,若vi,vj∈E或vi,vj∈E,反之等于0 。
可以看出,无向图的邻接矩阵是对称矩阵,要想知道某个顶点的度,其实就是这个顶点vi在邻接矩阵中第i行(或第i列)的元素之和 。
在有向图的邻接矩阵中,某个顶点的出(入)度是这个顶点vi在邻接矩阵中第i 行(列)的元素之和;
我们发现,当图中的边数相对于顶点较少时 , 邻接矩阵是对存储空间的极大浪费 。我们可以考虑对边或弧使用链式存储的方式来避免空间浪费的问题 。回忆树结构的孩子表示法 , 将结点存入数组,并对结点的孩子进行链式存储,不管有多少孩子 , 也不会存在空间浪费问题 。
邻接表的创建过程如下:
1)图中顶点用一个一维数组存储,当然也可以用单链表来存储,不过用数组可以较容易的读取顶点信息 , 更加方便 。另外,对于顶点数组中,每个数据元素还需要存储指向第一个邻接点的指针,以便于查找该顶点的边信息 。

推荐阅读