这篇文章主要介绍“PHP常见基础算法实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PHP常见基础算法实例分析”文章能帮助大家解决问题。
TODO
堆排序
选择排序
链表翻转
动态规划
<?phpclass Algorithmic { function fib($n) { if ($n < 2) { return 1; } else { return $this->fib($n - 1) + $this->fib($n - 2); } } function fib2($n) { if ($n < 2) { return 1; } else { $arr = [1, 1]; for ($i = 2; $i <= $n; $i++) { $arr[$i] = $arr[$i - 1] + $arr[$i - 2]; } } return $arr[$n]; } function fib3($n) { if ($n < 2) { return 1; } else { $last = 1; //等式第二项 $lastLast = 1; //等式第一项 for ($i = 2; $i <= $n; $i++) { $current = $last + $lastLast; $lastLast = $last; $last = $current; } return $current; } } function scanFile($dir) { $fileList = []; if (is_dir($dir)) { $dh = opendir($dir); while ($file = readdir($dh)) { if ($file == '.' || $file == '..') continue; //linux下一切皆文件 $newDir = $dir . '/' . $file; if (is_dir($newDir)) { $fileList[][$file] = $this->scanFile($newDir); } else { $fileList[] = $file; } } closedir($dh); } return $fileList; } function binarySort($arr, $target) { if (!is_array($arr) || count($arr) < 2) { return $arr; } $len = count($arr); $start = 0; $end = $len - 1; while ($start <= $end) { $middle = floor(($start + $end) / 2) ; if ($arr[$middle] == $target) { return $middle; } elseif ($arr[$middle] < $target) { $start = $middle + 1; } else { $end = $middle - 1; } } return false; } function bubbleSort($arr) { for ($i = count($arr) - 1; $i > 0; $i--) { for ($j = 0; $j < $i; $j++) { if ($arr[$j+1] < $arr[$j]) { $temp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $temp; } } } return $arr; } function quickSort($arr) { if (!is_array($arr) || count($arr) < 2) { return $arr; } $base = $arr[0]; $left = []; $right = []; for ($i = 1; $i <= count($arr) - 1; $i++) { if ($arr[$i] < $base) { $left[] = $arr[$i]; } else { $right[] = $arr[$i]; } } return array_merge(array_merge($this->quickSort($left),[$base]), $this->quickSort($right)); } function twoSum($arr, $sum = 8){ $tempArr = []; foreach ($arr as $k => $v) { if (isset($tempArr[$v])) { return [$k, $tempArr[$v]]; } $tempArr[$sum-$v] = $k; } return []; }}$algorithmic = new Algorithmic();//var_dump($algorithmic->scanFile("./"));//var_dump($algorithmic->twoSum([4,5,3,4,5,67,787]));//var_dump($algorithmic->fib3(4)); // 1 1 2 3 5//var_dump($algorithmic->binarySort([1,3, 4, 5,7,9], 3)); //var_dump($algorithmic->quickSort([14,5,13,114,4,3,167,87,14]));
关于“PHP常见基础算法实例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。