php数组的一些常见操作汇总
前端之家收集整理的这篇文章主要介绍了
php数组的一些常见操作汇总,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
数组求和
给定一个含有n个元素的整型数组a,求a中所有元素的和。可能您会觉得很简单,是的,的确简单,但是为什么还要说呢,原因有二,第一,这道题要求用递归法,只用一行代码。第二,这是我人生中第一次面试时候遇到的题,意义特殊。 简单说一下,两种情况: 如果数组元素个数为0,那么和为0。
如果数组元素个数为n,那么先求出前n - 1个元素之和,再加上a[n - 1]即可。
<div class="codetitle"><a style="CURSOR: pointer" data="13711" class="copybut" id="copybut13711" onclick="doCopy('code13711')"> 代码如下:
<div class="codebody" id="code13711">
// 数组求和
int sum(int
a,int n)
{
return n == 0 ? 0 : sum(a,n - 1) + a[n - 1];
}
求数组的最大值和最小值
给定一个含有n个元素的整型数组a,找出其中的最大值和最小值。 常规的做法是遍历一次,分别求出最大值和最小值,但我这里要说的是分治法(Divide and couquer),将数组分成左右两部分,先求出左半部份的最大值和最小值,再求出右半部份的最大值和最小值,然后综合起来求总体的最大值及最小值。这是个递归过程,对于划分后的左右两部分,同样重复这个过程,直到划分区间内只剩一个元素或者两个元素。
<div class="codetitle">
<a style="CURSOR: pointer" data="5425" class="copybut" id="copybut5425" onclick="doCopy('code5425')"> 代码如下: <div class="codebody" id="code5425">
// 求数组的最大值和最小值,返回值在maxValue和minValue
void MaxandMin(int a,int l,int r,int& maxValue,int& minValue)
{
if(l == r) // l与r之间只有一个元素
{
maxValue = a[l] ;
minValue = a[l] ;
return ;
} if(l + 1 == r) // l与r之间只有两个元素
{
if(a[l] >= a[r])
{
maxValue = a[l] ;
minValue = a[r] ;
}
else
{
maxValue = a[r] ;
minValue = a[l] ;
}
return ;
} int m = (l + r) / 2 ; // 求中点 int lmax ; // 左半部份最大值
int lmin ; // 左半部份最小值
MaxandMin(a,l,m,lmax,lmin) ; // 递归计算左半部份 int rmax ; // 右半部份最大值
int rmin ; // 右半部份最小值
MaxandMin(a,m + 1,r,rmax,rmin) ; // 递归计算右半部份 maxValue = max(lmax,rmax) ; // 总的最大值
minValue = min(lmin,rmin) ; // 总的最小值
}