PHP常见算法

字体大小: 中小 标准 ->行高大小: 标准

算法题
1. 使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组
//冒泡排序(数组排序)

  1. function bubble_sort($array)  
  2. {  
  3. $count = count($array);  
  4. if ($count <= 0) return false;  
  5. for($i=0; $i<$count$i++){  
  6. for($j=$count-1; $j>$i$j–){  
  7. if ($array[$j] < $array[$j-1]){  
  8. $tmp = $array[$j];  
  9. $array[$j] = $array[$j-1];  
  10. $array[$j-1] = $tmp;  
  11. }  
  12. }  
  13. }  
  14. return $array;  
  15. }  


//快速排序(数组排序)
  1. function quick_sort($array) {  
  2. if (count($array) <= 1) return $array;  
  3. $key = $array[0];  
  4. $left_arr = array();  
  5. $right_arr = array();  
  6. for ($i=1; $i  
  7. if ($array[$i] <= $key)  
  8. $left_arr[] = $array[$i];  
  9. else  
  10. $right_arr[] = $array[$i];  
  11. }  
  12. $left_arr = quick_sort($left_arr);  
  13. $right_arr = quick_sort($right_arr);  
  14. return array_merge($left_arrarray($key), $right_arr);  
  15. }  


2. 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组
  1. //二分查找(数组里查找某个元素)  
  2. function bin_sch($array$low$high$k){  
  3. if ($low <= $high){  
  4. $mid = intval(($low+$high)/2);  
  5. if ($array[$mid] == $k){  
  6. return $mid;  
  7. }elseif ($k < $array[$mid]){  
  8. return bin_sch($array$low$mid-1, $k);  
  9. }else{  
  10. return bin_sch($array$mid+1, $high$k);  
  11. }  
  12. }  
  13. return -1;  
  14. }  


//顺序查找(数组里查找某个元素)
  1. function seq_sch($array$n$k){  
  2. $array[$n] = $k;  
  3. for($i=0; $i<$n$i++){  
  4. if($array[$i]==$k){  
  5. break;  
  6. }  
  7. }  
  8. if ($i<$n){  
  9. return $i;  
  10. }else{  
  11. return -1;  
  12. }  
  13. }  


3. 写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数
//二维数组排序, $arr是数据,$keys是排序的健值,$order是排序规则,1是升序,0是降序
  1. function array_sort($arr$keys$order=0) {  
  2. if (!is_array($arr)) {  
  3. return false;  
  4. }  
  5. $keysvalue = array();  
  6. foreach($arr as $key => $val) {  
  7. $keysvalue[$key] = $val[$keys];  
  8. }  
  9. if($order == 0){  
  10. asort($keysvalue);  
  11. }else {  
  12. arsort($keysvalue);  
  13. }  
  14. reset($keysvalue);  
  15. foreach($keysvalue as $key => $vals) {  
  16. $keysort[$key] = $key;  
  17. }  
  18. $new_array = array();  
  19. foreach($keysort as $key => $val) {  
  20. $new_array[$key] = $arr[$val];  
  21. }  
  22. return $new_array;  
  23. }  

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/69169.html