PHP数组中,求差值最小的两个数

2025-03-19 04:10:20
推荐回答(2个)
回答1:

@header("Content-Type:text/html; charset=UTF-8");$arr = array();
$pr = array();$length = rand(10,100); //设定数组元素个数
for ($i=0;$i<=$length;$i++){
$arr[] = rand(1,10000);
echo $arr[$i].'
';
}$min = 10000;for ($i=0;$i<$length;$i++){
for ($j=$i+1;$j<=$length;$j++){
$s = abs($arr[$i]-$arr[$j]);
if($min>=$s){
if($min>$s)$pr=array();
$min = $s;
$pr[]=$arr[$i]." ".$arr[$j].' 差值:'.$s; //差值最小时 存入数组
}
}
}for ($i=0;$i echo $pr[$i].'
';
}
echo '共有'.count($pr).'种方案
';
?>

回答2:

#=================================
#文件名:PHPDocument1
#作者:十月GG(TaoShuChen)
#OICQ: 2578549
#创建时间:Mon Jun 21 17:19:08 CST 2010
#=================================
$data_arr = array();//定义将要被比较操作的数组
$result_arr = array(); //用来记录符合条件的数据
$arr_length = rand(10,20); //随机生成数组元素个数 10-20 之间
for ($i=0;$i<=$arr_length;$i++){
$data_arr[] = rand(1,100);
}
print_r($data_arr);
//因为数组中的数字是小于等于100的整数,所以将最小的差先定义为100
$min_poor = 100;foreach ($data_arr as $k => $v) {
for ($i=0;$i<=$arr_length;$i++){
if ($k != $i) {
$poor = abs($v-$data_arr[$i]);
if ($poor == $min_poor) {
$checked = true;
}else if($poor < $min_poor){
$result_arr = array();
$checked = true;
}
if ($checked) {//被验证需要记录数据
if (!in_array($data_arr[$i].','.$v,$result_arr)) { //排重
$result_arr[] = $v.','.$data_arr[$i];
$min_poor = $poor;
}
$checked = false;
}
}
}
}
print_r($result_arr);
?> 仅供参考