1.冒泡排序
$numbers = array(1,3,4,5,6,7,8,9,2,0);
$length = count($numbers);
for ($i=0;$i<$length-1;$i++){
for ($j=0;$j<$length-$i-1;$j++){
if ($numbers[$j]>$numbers[$j+1]){
$temp = $numbers[$j+1];
$numbers[$j+1] = $numbers[$j];
$numbers[$j]=$temp;
}
}
}
var_dump($numbers);
2.快速排序
$numbers = array(16,3,4,5,6,7,8,9,2,0);
function quickSort($numbers){
$length = count($numbers);
if ($length<1){
return $numbers;
}
$key = $numbers[0];
$left = array();
$right = array();
for ($i=1;$i<$length;$i++){
if ($numbers[$i]<$key){
$left[] = $numbers[$i];
}else{
$right[] = $numbers[$i];
}
}
$left = quickSort($left);
$right = quickSort($right);
return array_merge($left,array($key),$right);
}
}
quickSort($numbers);
3.斐波那契额数列
斐波那契数列:
1 1 2 3 5 8 13 21 34 55 …
概念:
前两个值都为1,该数列从第三位开始,每一位都是当前位前两位的和
规律公式为:
Fn = F(n-1) + F(n+1)
F:指当前这个数列
n:指数列的下标
非递归写法:
function fbnq($n){ //传入数列中数字的个数
if($n <= 0){
return 0;
}
$array[1] = $array[2] = 1; //设第一个值和第二个值为1
for($i=3;$i<=$n;$i++){ //从第三个值开始
$array[$i] = $array[$i-1] + $array[$i-2];
//后面的值都是当前值的前一个值加上前两个值的和
}
return $array;
}
递归写法:
function fbnq($n){
if($n <= 0) return 0;
if($n == 1 || $n == 2) return 1;
return fbnq($n - 1) + fbnq($n - 2);
}
4.判断是否是回文
$string="abc126321cba";
$stra=array();
$strb=array();
$res=checkhuiwen($string);
function checkhuiwen($string){
//输入字符串转换为数组
for($i=0;$i<strlen($string);$i++){
$stra[$i]=$string[$i];
}
//逆序输出数组array_reverse
$strb=array_reverse($stra);
//判断两数组是否相等,相等为回文
for($i=0;$i<count($stra);$i++){
if($stra[$i]!=$strb[$i]){
return 1;
break;
}
}
return 2;
}
if($res==2){
echo "YES";
}else{
echo "NO!";
}
网友评论