PHP基础算法合集

本片文章中 l o w 是 开 始 下 键 low是开始下键 lowheigh是结束的下键

冒泡排序

    for ($i=0;$i

快速排序

    {
        $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 = quick_sort($left_array);
        $right_array = quick_sort($right_array);
        return array_merge($left_array, array($base_num), $right_array);
    }
$arr=array(32,55,677,21,668,97,23);
var_dump(quick_sort($arr));

二分查找(前提要先排序)

 {
     if($low <= $high)
     {
         $mid = intval(($low + $high)/2);
         if($arr[$mid] == $k)
         {
             return $mid;
         }
         else if($k < $arr[$mid])
         {
             return bin_search($arr,$low,$mid-1,$k);
         }
         else
         {
             return bin_search($arr,$mid+1,$high,$k);
         }
     }
     return -1;
 }

 $arr=array(32,55,677,21,668,97,23);
 var_dump(bin_search($arr,2,9,21));


遍历一个文件下的所有文件和子文件夹

{
    $files = array();
    if($handle = opendir($dir))
    {
        while (($file = readdir($handle))!== false) 
        {
            if($file != '..' && $file != '.')
            {
                if(is_dir($dir."/".$file))
                {
                    $files[$file]=my_scandir($dir."/".$file);
                }
                else
                {
                    $files[] = $file;
                }
            }
        }

        closedir($handle);
        return $files;
    }
}

var_dump(my_scandir('../'));

高效从一个标准url中获取出文件的扩展名

{
    $arr = parse_url($url);
    //'scheme' => string 'http' (length=4)
    //'host' => string 'www.sina.com.cn' (length=15)
    //'path' => string '/abc/de/fg.php' (length=14)
    //'query' => string 'id=1' (length=4)
    $file = basename($arr['path']);
    $ext = explode('.', $file);
    return $ext[count($ext)-1];
}

print(getExt('http://www.sina.com.cn/abc/de/fg.html.php?id=1'));

插入排序

function mySort($arr){
	for($i = 1;$i < count($arr);$i++){
		for($j = $i;$j > 0;$j--){
			if($arr[$j] < $arr[$j-1]){
				$t = $arr[$j];
				$arr[$j] = $arr[$j-1];
				$arr[$j-1] = $t;
			}else{
				break;
			}
		}
	}
	return $arr;
}
var_dump(mySort($arr));


二分查找

$low = 0;
$high = count($arr)-1;
$key = 12;
function search($arr,$low,$high,$key){
	while($low <= $high){
		$mid = intval(($low+$high)/2);
		if($arr[$mid] == $key){
			return $mid;
		}elseif($arr[$mid] < $key){
			$low = $mid +1;
		}elseif($arr[$mid] > $key){
			$high = $mid -1;
		}
	}
        return -1;
 }
var_dump(search($arr,$low,$high,$key));

你可能感兴趣的:(PHP,算法,php,算法)