只是个人总结的感悟,欢迎被怼
被别人面试,很多东西是需要提前准备的,面试应该是提取过程,不应该是思考过程
以后自己算法一类的总结都写到这篇文章里面
最大子序列
<?php
/**
* User: LYJ
* 最大子序列之和 求[-2,11,-4,13,-5,-2]最大子序列
* 最常规的做法以第一个数为基数相加,求第一个数为基数的最大数
* 第二个数为基数的相加最大数...求最大数
*/
$array = [-2, 11, -4, 13, -5, -2];
function maxsubs($arr) {
$maxsum = 0;
$length = count($arr);
for ($i = 0; $i < $length; $i++) {
$thissub = 0;
for ($j = $i; $j < $length; $j++) {
$thissub += $arr[$j];
if ($thissub > $maxsum) {
$maxsum = $thissub;
}
}
}
return $maxsum;
}
echo maxsubs($array);
冒泡排序:
/**
* a b c
* c = a
* a = b
* b = c
*
* 冒泡排序
* [35,15,27,23,99,78,65,232,12,9,340,89]
*/
$array = [35, 15, 27, 23, 99, 78, 65, 232, 12, 9, 340, 89];
function maopao($arr) {
$length = count($arr);
for ($i = 0; $i < $length - 1; $i++) {
for ($j = 0; $j < $length - $i - 1; $j++) {
if ($arr[$j] > $arr[$j + 1]) {
$tmp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $tmp;
}
}
}
return $arr;
}
插入排序
/**
* 插入排序 [35, 15, 27, 23, 99, 78, 65, 232, 12, 9, 340, 89]
* insertion Sort
*/
function insert_sort($arr){
$count = count($arr);
for($i=1; $i<$count; $i++){
$tmp = $arr[$i];
for($j=$i-1;$j>=0;$j--){
if($arr[$j]>$tmp){
$arr[$j+1] = $arr[$j];
$arr[$j] = $tmp;
}
}
}
return $arr;
}
print_r(insert_sort($array));
约瑟夫环:
function king($n,$m){
$monkeys = range(1,$n);
$i=0;
while(count($monkeys)>1){
if(($i+1)%$m==0){
unset($monkeys[$i]);
}else{
array_push($monkeys,$monkeys[$i]);
unset($monkeys[$i]);
}
$i++;
}
return current($monkeys);
}
echo king(5,3);