-->

PHP资讯

您的当前位置:首页 > 资讯 > PHP基础

常用算法整理

2020-03-26 21:06:08  来源:admin 点击:542


//1000以内的素数
echo "素数:"; 
for($i=2;$i<1000;$i++) 
{
   static $count = 0;
   // 1000只能整除平方根的值
   for($j=2;$j<=intval(sqrt($i));$j++) 
   { 
     if($i%$j==0) 
     { 
       $isPrime=false; 
       break; 
     } 
     $isPrime=true; 
   } 
   if($isPrime) 
   { 
     $count++;//是素数,所以统计变量加1 
     echo $i ." "; 
   } 
} 
echo "素数的个数为:".$count;
?>
<?php
//判断一个数是不是素数
function checkNum($num){
	for($i=2;$i<$num;$i++){
		if($num%$i == 0){
			$isprime = false;
			break;
		}
		$isprime = true;
	}
	if($isprime){
		echo '是素数';
	}else{
		echo '不是素数';
	}
}
checkNum(991);
?>

<?php 
echo "偶数:"; 
for($i=0;$i<1000;$i++) 
{ 
   static $count = 0;
   if($i%2 == 0){
	   echo $i .' ';
		$count ++;
   }
} 
echo "偶数的个数为:".$count; 
?>

<?php
//遍历文件和文件目录
function AllFile($dir){
    if($dh = opendir($dir)){
        while (($file = readdir($dh)) !== false){
            if($file !='..' && $file !='.'){
                if(is_dir($dir.'/'.$file)){
                    AllFile($dir.'/'.$file);  //如果判断还是文件,则递归
                }else{  
                    echo $file;            //输出文件名
                }
            }
        } 
    }
}
?>

<?php
$mail = 'runoob@runoob.com';  //邮箱地址
$pattern = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/";
preg_match($pattern, $mail, $matches);
var_dump($matches);  //输出匹配结果
?>

<?php
//从小到大排序
function maopao($arr){
	$count = count($arr);
	for($i = 0;$i<$count;$i++){
		for($j = $count-1;$j>$i;$j--){
			if($arr[$j]<$arr[$j-1]){
				$temp = $arr[$j];
				$arr[$j] = $arr[$j-1];
				$arr[$j-1] = $temp;
			}
		}	
	}
	return $arr;
}
$array = [2,3,9,4,6,8];
print_r(maopao($array));
?>
<?php
//从大到小排序
function maopao2($array2){
	$count = count($array2);
	$n = $count-1;
	for($i=0;$i<$count;$i++){
		for($j=0;$j<$n;$j++){
			if($array2[$j]<$array2[$j+1]){
				$temp = $array2[$j+1];
				$array2[$j+1] = $array2[$j];
				$array2[$j] = $temp;
			}
		}
	}
	return $array2;
}
$array2 = [2,3,9,4,6,8];
print_r(maopao2($array2));
?>

<?php
//快速排序
function quick_sort($array) {

    if (count($array) <= 1) return $array;
	//先获取第一个数
    $key = $array[0];
	//写两个数组,1号和2号
    $left_arr = array();

    $right_arr = array();

    for ($i=1; $i<count($array); $i++){
		//循环判断 第i个,如果比key小,放在左边
        if ($array[$i] <= $key)
            $left_arr[] = $array[$i];
        else
            $right_arr[] = $array[$i];

    }

    $left_arr = quick_sort($left_arr);

    $right_arr = quick_sort($right_arr);
	//合并
    return array_merge($left_arr, array($key), $right_arr);

}
$array2 = [2,3,9,4,6,8];
print_r(quick_sort($array2));
?>


<?php
//字符串反转
function strrev_my($str){
	for($i=0;true;$i++){
		if(!isset($str[$i])){
			break;
		}	
	}
	$retrun = '';
	for($j = $i-1;$j>=0;$j--){
			$retrun .= $str[$j];
		}
	return $retrun;
}
$strr = 'abcdefghijklmn';
echo strrev_my($strr);
?>

image.png

<?php
function binsearch($x,$a){
	//先算出总数
    $c=count($a);
	//定义一个0和最后的数
    $lower=0;
    $high=$c-1;
	//循环
    while($lower<=$high){
        $middle=intval(($lower+$high)/2); //求出中间数
        if($a[$middle]>$x){
            $high=$middle-1;
        } elseif($a[$middle]<$x){
            $lower=$middle+1;
        } else{
            return $middle;
        }
    }
    return false;
}
?>

无限级分类

function tree($arr,$pid=0,$level=0){
    static $list = array();
    foreach ($arr as $v) {
        //如果是顶级分类,则将其存到$list中,并以此节点为根节点,遍历其子节点
        if ($v['pid'] == $pid) {
            $v['level'] = $level;
            $list[] = $v;
            tree($arr,$v['id'],$level+1);
        }
    }
    return $list;
}

字符串

<?php
//普通字符反转
//输入abcdefghijkmlnopqistuvwxyz
//输出zyxwvutsiqponlmkjihgfedcba
//@autor 臧富祥
function str_rev($str){
	for($i=0;true;$i++){
		if(!isset($str[$i])){
			break;
		}
	}
	//上面的也可以用strlen($str)代替求出$i的值
	for($j=$i-1;$j>=0;$j--){
		$str2 .= $str[$j];
	}
	return $str2;
}
$a = str_rev('abcdefghijkmlnopqistuvwxyz');
echo $a;
echo '<hr/>';
?>

<?php
//单词反转
//输入 I am a student
//输出 student am a I
//@autor 臧富祥
function str_rev2($str){
	$arr = explode(' ', $str);
	$count = count($arr);
	for($i=$count;$i>=0;$i--){
		$str2 .= $arr[$i].' ';
	}
	return $str2;
}
$b = str_rev2('I am a student');
echo $b;
echo '<hr/>';
?>

<?php
//单词反转
//输入 I'm a very good student
//输出 m'I a yrev doog tneduts
//@autor 臧富祥
function str_rev3($str){
	$arr = explode(' ', $str);
	foreach ($arr as $key => $value) {
		# code...
		$str2 = '';
		$i = strlen($value);
		for($j=$i-1;$j>=0;$j--){
			$str2 .= $value[$j];
		}
		$str3 .= $str2.' ';
	}
	return $str3;
}
$c = str_rev3("I'm a very good student");
echo $c;
echo '<hr/>';
?>


相关文章更多 >

© 2024版权所有 水水网

电话:171780793