PHP面试算法
<?php//冒泡排序
function bubbleSort($arr){$count=count($arr);for ($i=0; $i < $count; $i++) { for ($j=0; $j < $count-$i-1; $j++) { if ($arr[$j]>$arr[$j+1]) {$temp=$arr[$j];$arr[$j]=$arr[$j+1];$arr[$j+1]=$temp;}}}return $arr;
}
$arr=array(20,40,60,80,30,70,90,10,50,0);
print_r(bubbleSort($arr));//快速排序function quickSort(&$arr){$count=count($arr);if($count>1){$k=$arr[0];$x=array();$y=array();for ($i=1; $i < $count; $i++) { if($arr[$i]<=$k){$x[]=$arr[$i];}elseif($arr[$i]>$k){$y[]=$arr[$i];}}$x=quickSort($x);$y=quickSort($y);return array_merge($x,array($k),$y);}else{return $arr;}}
$arr=array(20,40,60,80,30,70,90,10,50,0);
print_r(bubbleSort($arr));//順序排序function orderSort($arr){$count=count($arr);for ($i=0; $i < $count-1; $i++) { $p=$i;for ($j=$i+1; $j < $count; $j++) { $p=$arr[$p]>$arr[$j]?$j:$p;}if($p!=$i){$temp=$arr[$i];$arr[$i]=$arr[$p];$arr[$p]=$temp;}}return $arr;}$arr=array(20,40,60,80,30,70,90,10,50,0);print_r(orderSort($arr));
//對二維數組進行排序 /*function array_sort_by_any_row($array_name, $row_id, $order_type){$array_temp=array();foreach ($array_name as $key => $value) {$array_temp[$key]=$value[$row_id];}if($order_type==="ASC"){//順序asort($array_temp);}else{//倒序arsort($array_temp);}$result_array=array();foreach ($array_temp as $key => $value) {$result_array[$key]=$array_name[$key];}return $result_array; }$arr = array(array(‘num’=>5, ‘value’=>6), array(‘num’=>2, ‘value’=>39), array(‘num’=>36, ‘value’=>29) );$sortarr = array_sort_by_any_row($arr, ‘num’, ‘DESC’); print_r($sortarr);*/ //第二種方法 對任意列進行排序 /*function array_sort($arr,$order){if(is_array($arr) && is_array($order)){foreach($order as $key=>$val){if($val == 'desc'){foreach ($arr as $value) {$arr1[][$key] = $value[$key];}arsort($arr1);}else{foreach ($arr as $value) {$arr2[][$key] = $value[$key];}asort($arr2);}}return array($arr1,$arr2);}else{return false;}}$arr = [['age'=>'1','id'=>1],['age'=>'2','id'=>3],['age'=>'3','id'=>2],['age'=>'5','id'=>7] ];$order = ['age'=>'asc','id'=>'desc' ];$res = array_sort($arr,$order); echo "<pre>"; print_r($res); echo "</pre>";*/ //
//對二維數組進行排序 /*function array_sort_by_any_row($array_name, $row_id, $order_type){$array_temp=array();foreach ($array_name as $key => $value) {$array_temp[$key]=$value[$row_id];}if($order_type==="ASC"){//順序asort($array_temp);}else{//倒序arsort($array_temp);}$result_array=array();foreach ($array_temp as $key => $value) {$result_array[$key]=$array_name[$key];}return $result_array; }$arr = array(array(‘num’=>5, ‘value’=>6), array(‘num’=>2, ‘value’=>39), array(‘num’=>36, ‘value’=>29) );$sortarr = array_sort_by_any_row($arr, ‘num’, ‘DESC’); print_r($sortarr);*/ //第二種方法 對任意列進行排序 /*function array_sort($arr,$order){if(is_array($arr) && is_array($order)){foreach($order as $key=>$val){if($val == 'desc'){foreach ($arr as $value) {$arr1[][$key] = $value[$key];}arsort($arr1);}else{foreach ($arr as $value) {$arr2[][$key] = $value[$key];}asort($arr2);}}return array($arr1,$arr2);}else{return false;}}$arr = [['age'=>'1','id'=>1],['age'=>'2','id'=>3],['age'=>'3','id'=>2],['age'=>'5','id'=>7] ];$order = ['age'=>'asc','id'=>'desc' ];$res = array_sort($arr,$order); echo "<pre>"; print_r($res); echo "</pre>";*/ //
寫5個不同的函數,來截取一個全路徑的文件的擴展名,允許封裝php庫中已有的函數
$path = str_replace('\\', '/',__FILE__); echo $path.'<br />'; function extname1($path) { return strrchr($path, ‘.’); }function extname2($path) { $position = strrpos($path, ‘.’); return substr($path, $position); }function extname3($path) { $arr = explode(‘.’, $path); return $arr[count($arr) – 1]; }function extname4($path) { preg_match_all(‘/[\w\/\:\-]+\.([\w]+)$/’, $path, $out); return $out[1][0]; }function extname5($path) { return preg_replace(‘/^[^\.]+\.([\w]+)$/’, ‘${1}’, basename($path)); } print_r(extname5($path));總結
- 上一篇: js实现贪吃蛇小游戏
- 下一篇: 动态规划算法php,php算法学习之动态