一个随机数值数组,请将它排序后,一个值$num为数组中两个数值之和,取出他们的下标
$num =8;
$arr = array(120,2222,3,5,6,7,8,9,10,11,12);
test($num,$arr);
function test($num,$arr){
sort($arr);
$count = count($arr);
for($i=0;$i<=$count;$i++) {
if($arr[$i] + $arr[++$i] === $num){
$info = [array_keys($arr,$arr[$i])[0],array_keys($arr,$arr[++$i])[0]];
var_dump($info);
}
}
}
冒泡算法
function maopao($arr){
$len = count($arr);
for($k=0;$k<=$len;$k++)
{
for($j=$len-1;$j>$k;$j--){
if($arr[$j]<$arr[$j-1]){
$temp = $arr[$j];
$arr[$j] = $arr[$j-1];
$arr[$j-1] = $temp;
}
}
}
return $arr;
}
$a = [1,2,3,41,2,31223,1,3212,41,234,1,24,13,21,24,1,512,4324,5];
$cccc = maopao($a);
var_dump($cccc);
猴大王 1、一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,
function king($n, $m){
$monkeys = range(1, $n); //创建1到n数组
$i=0;
while (count($monkeys)>1) { //循环条件为猴子数量大于1
if(($i+1)%$m==0) { //$i为数组下标;$i+1为猴子标号
unset($monkeys[$i]); //余数等于0表示正好第m个,删除,用unset删除保持下标关系
} else {
array_push($monkeys,$monkeys[$i]); //如果余数不等于0,则把数组下标为$i的放最后,形成一个圆形结构
unset($monkeys[$i]);
}
$i++;//$i 循环+1,不断把猴子删除,或 push到数组
}
return current($monkeys); //猴子数量等于1时输出猴子标号,得出猴王
}
echo king(1116,3);
牛第四年开始生小牛,生的都是母牛,可以生到15年,第二年死亡,请问多少年可以到20头牛
function niu($y){
static $num = 0;
for ($i = 1; $i <= $y;$i++) {
if($i >= 4 && $i<15) {
$num++;
} else if($i == 20) {
return $num;
}
}
return $num;
}
echo niu(20);
二分算法
function binsearch($x,$a){
$c=count($a);
$lower=0;
$high=$c-1;
while($lower<=$high){
$middle=intval(($lower+$high)/2);
var_dump($middle);
if($a[$middle]>$x){
$high=$middle-1;
} elseif($a[$middle]<$x){
$lower=$middle+1;
} else{
return $middle;
}
}
return false;
}
$a = [1,2,3,41,2,31223,1,3212,41,234,1,24,13,21,24,1,512,4324,5];
$dd = binsearch(22,$a);
var_dump($dd);
快速排序算法
function quickSort($arr) {
//先判断是否需要继续进行
$length = count($arr);
if($length <= 1) {
return $arr;
}
//选择第一个元素作为基准
$base_num = $arr[0];
//遍历除了标尺外的所有元素,按照大小关系放入两个数组内
//初始化两个数组
$left_array = array(); //小于基准的
$right_array = array(); //大于基准的
for($i=1; $i<$length; $i++) {
if($base_num > $arr[$i]) {
//放入左边数组
$left_array[] = $arr[$i];
} else {
//放入右边
$right_array[] = $arr[$i];
}
}
//再分别对左边和右边的数组进行相同的排序处理方式递归调用这个函数
$left_array = quickSort($left_array);
$right_array = quickSort($right_array);
//合并
return array_merge($left_array, array($base_num), $right_array);
}
$a = [1,2,3,41,2,31223,1,3212,41,234,1,24,13,21,24,1,512,4324,5];
$dd = quickSort($a);
var_dump($dd);
本文为大海原创文章,转载无需和我联系,但请注明来自大海博客https://www,ypyunedu.com
最新评论