好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

整理常见的PHP算法面试题

本篇文章向大家介绍整理常见的PHP算法面试题,有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

J=8(49) [13 27 38 49 49 65 76 97]

function insert_sort($arr){
    $count = count($arr);   
    for($i=1; $i<$count; $i++){ 
   $tmp = $arr[$i];   
   $j = $i - 1;   
   while($arr[$j] > $tmp){
  $arr[$j+1] = $arr[$j];
  $arr[$j] = $tmp;  
  $j--; 
   }    
    }    
    return $arr; 
}
function select_sort($arr){
    $count = count($arr);   
    for($i=0; $i<$count; $i++){ 
   $k = $i;   
   for($j=$i+1; $j<$count; $j++){ 
  if ($arr[$k] > $arr[$j]) $k = $j;   
   }  
   if($k != $i){ 
  $tmp = $arr[$i];  
  $arr[$i] = $arr[$k];  
  $arr[$k] = $tmp;   
   }   
    }   
    return $arr; 
}
function bubble_sort($array){   
    $count = count($array);
    if ($count <= 0) return false;   
    for($i=0; $i<$count; $i++){ 
   for($j=$count-1; $j>$i; $j--){ 
  if ($array[$j]<$array[$j-1]){ 
 $tmp = $array[$j];    
 $array[$j] = $array[$j-1];    
 $array[$j-1] = $tmp;  
  }  
   }   
    }    
    return $array; 
}

各趟排序之后的状态

function quickSort(&$arr){    
    if(count($arr)>1){
   $k=$arr[0];
   $x=array();
   $y=array();
   $_size=count($arr);   
   for($i=1;$i<$_size;$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;
    }
}

5、希尔排序(shell sort)— O (n log n)

functionshell_sort(&$arr){    
    if(!is_array($arr))return;
    $n=count($arr);    
    for($gap=floor($n/2);$gap>0;$gap=floor($gap/=2)){
   for($i=$gap;$i<$n;++$i){
  for($j=$i-$gap;$j>=0&&$arr[$j+$gap]<$arr[$j];$j-=$gap){ 
 $temp=$arr[$j]; 
 $arr[$j]=$arr[$j+$gap]; 
 $arr[$j+$gap]=$temp;
  }
   }
    }
}

6、二分查找

/** 
* 二分算法查找 
* @param array $array 要查找的数组 
* @param int $min_key 数组的最小下标 
* @param int $max_key 数组的最大下标 
* @param mixed $value 要查找的值 
* @return boolean 
*/ 
function bin_search($array,$min_key,$max_key,$value){   
    if($min_key <= $max_key){ 
   $key = intval(($min_key+$max_key)/2); 
   if($array[$key] == $value){ 
  return true; 
   }elseif($value < $array[$key]){ 
  return bin_search($array,$min_key,$key-1,$value);
   }else{ 
  return bin_search($array,$key+1,$max_key,$value);
   }   
    }else{ 
   return false;   
    } 
}

7、线性表的删除(数组中实现)

function delete_array_element($array, $i)   {   
    $len = count($array);   
    for ($j=$i; $j<$len; $j++){ 
   $array[$j] = $array[$j+1]   
    }   
    array_pop($array);  
    return $array; 
}

8、字符串长度

function strlen($str)   { 
    if ($str == '') return 0; 
    $count = 0; 
    while (1){ 
   if ($str[$count] != NULL){ 
  $count++; 
  continue; 
   }else{ 
  break; 
   } 
    } 
    return $count; 
}

9、字符串翻转

function strrev($str)   {   
    if ($str == '') return 0;   
    for ($i=(strlen($str)-1); $i>=0; $i--){   
   $rev_str .= $str[$i];   
    }   
    return $rev_str; 
}

10、字符串比较

function strcmp($s1, $s2)   { 
    if (strlen($s1) < strlen($s2)) return -1; 
    if (strlen($s1) > strlen($s2)) return 1; 
    for ($i=0; $i<strlen($s1); $i++){ 
   if ($s1[$i] == $s2[$i]){ 
  continue; 
   }else{
  return false; 
   }   
    }   
    return 0; 
}

11、查找字符串

function strstr($str, $substr)  { 
    $m = strlen($str); 
    $n = strlen($substr); 
    if ($m < $n) return false; 
    for ($i=0; $i<=($m-$n+1); $i++){ 
   $sub = substr($str, $i, $n); 
   if (strcmp($sub, $substr) == 0) return $i; 
    } 
    return false; 
}

12、字符串替换

function str_replace($substr, $newsubstr, $str) { 
    $m = strlen($str); 
    $n = strlen($substr); 
    $x = strlen($newsubstr); 
    if (strchr($str, $substr) == false) return false; 
    for ($i=0; $i<=($m-$n+1); $i++){ 
   $i = strchr($str, $substr); 
   $str = str_delete($str, $i, $n); 
   $str = str_insert($str, $i, $newstr); 
    } 
    return $str; 
}

13、插入一段字符串

function str_insert($str, $i, $substr)  { 
    for($j=0; $j<$i; $j++){ 
   $startstr .= $str[$j]; 
    } 
    for ($j=$i; $j<strlen($str); $j++){ 
   $laststr .= $str[$j]; 
    } 
    $str = ($startstr . $substr . $laststr); 
    return $str; 
}

14、删除一段字符串

function str_delete($str, $i, $j){  
    for ($c=0; $c<$i; $c++){ 
   $startstr .= $str[$c]; 
    } 
    for ($c=($i+$j); $c<strlen($str); $c++){ 
   $laststr .= $str[$c]; 
    } 
    $str = ($startstr . $laststr); 
    return $str; 
}

15、复制字符串

function strcpy($s1, $s2){ 
    if (strlen($s1)==NULL || !isset($s2)) return; 
    for ($i=0; $i<strlen($s1); $i++){ 
   $s2[] = $s1[$i]; 
    } 
    return $s2; 
}
16、连接字符串
function strcat($s1, $s2){ 
    if (!isset($s1) || !isset($s2)) return; 
    $newstr = $s1; 
    for($i=0; $i<count($s); $i++){ 
   $newstr .= $st[$i]; 
    } 
    return $newsstr; 
}

17、简单编码函数(与 php_decode 函数对应)

function php_encode($str)    { 
    if ($str=='' && strlen($str)>128) 
   return false;
    for($i=0; $i<strlen($str); $i++){ 
   $c = ord($str[$i]); 
   if ($c>31 && $c<107) 
  $c += 20; 
  if ($c>106 && $c<127) 
 $c -= 75; 
 $word = chr($c); 
 $s .= $word; 
  } 
  return $s; 
   }
    }
}

18、简单解码函数(与 php_encode 函数对应)

function php_decode($str)   { 
    if ($str=='' && strlen($str)>128) return false; 
    for($i=0; $i<strlen($str); $i++){ 
   $c = ord($word); 
   if ($c>106 && $c<127) $c = $c-20; 
   if ($c>31 && $c<107) $c = $c+75; 
   $word = chr($c); 
   $s .= $word; 
    } 
    return $s; 
}

19、简单加密函数(与 php_decrypt 函数对应)

function php_encrypt($str)  {   
    $encrypt_key = 'abcdefghijklmnopqrstuvwxyz1234567890';
    $decrypt_key = 'ngzqtcobmuhelkpdawxfyivrsj2468021359';  
    if (strlen($str) == 0) return false;
    for ($i=0; $i<strlen($str); $i++){    
   for ($j=0; $j<strlen($encrypt_key); $j++){    
  if ($str[$i] == $encrypt_key[$j]){   
 $enstr .= $decrypt_key[$j]; 
 break;   
  }    
   }    
    }   
    return $enstr; 
}

20、简单解密函数(与 php_encrypt 函数对应)

function php_decrypt($str)  { 
    $encrypt_key = 'abcdefghijklmnopqrstuvwxyz1234567890';
    $decrypt_key = 'ngzqtcobmuhelkpdawxfyivrsj2468021359'; 
    if (strlen($str) == 0) return false; 
    for ($i=0; $i<strlen($str); $i++){ 
   for ($j=0; $j<strlen($decrypt_key); $j++){ 
  if ($str[$i] == $decrypt_key[$j]){ 
 $enstr .= $encrypt_key[$j]; 
 break; 
  } 
   } 
    } 
    return $enstr; 
}

推荐学习:《PHP视频教程》

以上就是整理常见的PHP算法面试题的详细内容!

查看更多关于整理常见的PHP算法面试题的详细内容...

  阅读:46次