一个不定长度的数组1.求出最大值,最小值及其位置。2.找出比两边的数都大的数的个数,输出比两边的数都小的数的值。3.在数组中搜索指定的值($target)是否存在,不存在输出不存在,存在则输出其下标。4.去掉最大值,去掉最小值,求平均值。
5.去掉数组中最小的两个数,其他的数求平均值。
5.去掉数组中最小的两个数,其他的数求平均值。
解决方案 »
- mysql_fetch_row(): supplied argument is not a valid MySQL result resource,何人能解?
- 求助一SQL语句
- 一个关于Cookie的问题
- strpos函数 求救 帮忙一下
- 查询语句中为何不能使用strtotime()函数?
- 请问怎么提取一段字符串中的汉字内容(包括标点最好能包括换行符什么的)
- 关于WAP抓取数据包获取变量,不知道php可否实现
- 为什么支持php的空间要比支持asp的空间贵啊?
- 请教网站开发高手一些生成静态页面的内容发布系统的问题。
- 我想知道html中做个连接,gif图片显示后,右下角有个小横线,怎么去掉?
- PHP连接MYSQL 结果网页无法显示(windows7)
- 如何从外网访问局域网内的某台机子上的网站?只要在路由器上设置映射吗?
$hand = array(213,3245,556,67,43,434,42,45,654,32,46,8,9,4,32);
$max = $min = $minSec = $avg1 = $avg2 = $hang[0]; //最大值,最小值 ,第二小值,平均值一,平均值二
$gtBothNum = 0; //比两边都大的数个数
$ltBothArr = array(); //比两边都小的数集合
$target = 5; //指定的值,假定为5
$hasTarget = false; //指定值是否存在
$sum = $count = 0; //总和
foreach($hand as $i=>$v){
$count++;
if($v > $max){
$max = $v;
}
if($v <= $min){
$minSec = $min;
$min = $v;
}elseif($v <= $minSec){
$minSec = $v;
}
if(isset($hand[$i-1])&& isset($hand[$i+1])){ // 假定第一个和最后一个不符合楼主要求
if($hand[$i-1] < $v && $v < $hand[$i+1]){
$gtBothNum++;
}
if($hand[$i-1] > $v && $v > $hand[$i+1]){
$ltBothArr[] = $v; //如果楼主要输出,在这里输出就行了
}
}
if($v == $target){
$hasTarget = true; //如果楼主要输出,就输出
}
$sum += $v;
} $avg1 = ($sum - $max - $min)/($count -2);
$avg1 = ($sum - $minSec - $min)/($count -2); //时间复杂度为n
//吃饭去了 没有测试,楼主自己测试一下
修改后如下:$hand = array(213,3245,556,67,43,434,42,45,654,32,46,8,9,4,32);
$max = $min = $minSec = $avg1 = $avg2 = $hand[0]; //最大值,最小值 ,第二小值,平均值一,平均值二
$gtBothNum = 0; //比两边都大的数个数
$ltBothArr = array(); //比两边都小的数集合
$target = 5; //指定的值,假定为5
$hasTarget = false; //指定值是否存在
$sum = $count = 0; //总和
$position = -1;
foreach($hand as $i=>$v){
$count++;
if($v > $max){
$max = $v;
}
if($v <= $min){
$minSec = $min;
$min = $v;
}elseif($v <= $minSec){
$minSec = $v;
}
if(isset($hand[$i-1])&& isset($hand[$i+1])){ // 假定第一个和最后一个不符合楼主要求
if($hand[$i-1] < $v && $v > $hand[$i+1]){
$gtBothNum++;
}
if($hand[$i-1] > $v && $v < $hand[$i+1]){
$ltBothArr[] = $v; //如果楼主要输出,在这里输出就行了
}
}
if($v == $target){
$hasTarget = true; //如果楼主要输出,就输出
$position = $i;
}
$sum += $v;
} $avg1 = ($sum - $max - $min)/($count -2);
$avg1 = ($sum - $minSec - $min)/($count -2);
echo $min;
echo '<br>';
echo $minSec;
echo '<br>';
echo $max;
echo '<br>';
echo $position;
echo '<br>';
var_dump($ltBothArr);
asort($data);
echo 'MIN:',key($data),'=>',current($data),"\n";
end($data);
echo 'MAX:',key($data),'=>',current($data),"\n";reset($hand);
echo 'LEFT:',key($hand),'=>',current($hand),"\n";
end($hand);
echo 'RIGHT:',key($hand),'=>',current($hand),"\n";//去除最大值和最小值,求平均值
reset($data);
//去除最大值
$d = array_pop($data);
//去除最小值
arsort($d);
$d = array_pop($d);
//平均值
echo array_sum($d)/count($d);
↖(^ω^)↗
定义几个变量 for 比较 前面一个后面一个 ... ...
O(∩_∩)O谢谢