当前位置:编程学习 > > 正文

php大量数据计算有什么技巧(PHP各种常见经典算法总结排序、查找、翻转等)

时间:2021-11-04 19:35:34类别:编程学习

php大量数据计算有什么技巧

PHP各种常见经典算法总结排序、查找、翻转等

本文实例讲述了PHP各种常见经典算法。分享给大家供大家参考,具体如下:

冒泡排序算法

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • public function test() {
  •     $arr = array(43, 54, 62, 21, 66, 32, 78, 36, 76, 39);
  •     var_dump($arr);
  •     echo '<br/>';
  •     $arr = $this->bubbleSort($arr);
  •     var_dump($arr);
  • }
  • public function bubbleSort($arr) {
  •     $len = count($arr);
  •     //该层循环控制 需要冒泡的轮数
  •     for ($i = 1; $i < $len; $i++) {
  •       //该层循环用来控制每轮 冒出一个数 需要比较的次数
  •       for ($k = 0; $k < $len - $i; $k++) {
  •         if ($arr[$k] > $arr[$k + 1]) {
  •           $tmp = $arr[$k + 1]; // 声明一个临时变量
  •           $arr[$k + 1] = $arr[$k];
  •           $arr[$k] = $tmp;
  •         }
  •       }
  •     }
  •     return $arr;
  • }
  • 快速排序

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • public function quick_sort($arr) {
  •     //先判断是否需要继续进行
  •     $length = count($arr);
  •     if ($length <= 1) {
  •       return $arr;
  •     }
  •     $base_num = $arr[0]; //选择一个标尺 选择第一个元素
  •     //初始化两个数组
  •     $left_array = array(); //小于标尺的
  •     $right_array = array(); //大于标尺的
  •     for ($i = 1; $i < $length; $i++) {   //遍历 除了标尺外的所有元素,按照大小关系放入两个数组内
  •       if ($base_num > $arr[$i]) {
  •         //放入左边数组
  •         $left_array[] = $arr[$i];
  •       } else {
  •         //放入右边
  •         $right_array[] = $arr[$i];
  •       }
  •     }
  •     //再分别对 左边 和 右边的数组进行相同的排序处理方式
  •     //递归调用这个函数,并记录结果
  •     $left_array = $this->quick_sort($left_array);
  •     $right_array = $this->quick_sort($right_array);
  •     //合并左边 标尺 右边
  •     return array_merge($left_array, array($base_num), $right_array);
  • }
  • public function test() {
  •     $arr = array(4, 3, 1, 2, 8, 9);
  •     var_dump($arr);
  •     echo '<br/>';
  •     $arr = $this->quick_sort($arr);
  •     var_dump($arr);
  • }
  • 二分查找

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • public function bin_search($arr, $low, $high, $k) {
  •     if ($low <= $high) {
  •       $mid = intval(($low + $high) / 2);
  •       if ($arr[$mid] == $k) {
  •         return $mid;
  •       } else if ($k < $arr[$mid]) {
  •         return $this->bin_search($arr, $low, $mid - 1, $k);
  •       } else {
  •         return $this->bin_search($arr, $mid + 1, $high, $k);
  •       }
  •     }
  •     return -1;
  • }
  • public function test() {
  •     $arr = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
  •     var_dump($arr);
  •     echo '<br/>';
  •     $arr = $this->bin_search($arr, 0, 8, 4);
  •     var_dump($arr);
  • }
  • 顺序查找

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • public function seq_search($arr, $n, $k) {
  •     $array[$n] = $k;
  •     for ($i = 0; $i < $n; $i++) {
  •       if ($arr[$i] == $k) {
  •         break;
  •       }
  •     }
  •     if ($i < $n) {
  •       return $i;
  •     } else {
  •       return -1;
  •     }
  • }
  • public function test_suanfa() {
  •     $arr = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
  •     var_dump($arr);
  •     echo '<br/>';
  •     $arr = $this->seq_search($arr, 4, 4);
  •     var_dump($arr);
  • }
  • 线性表的删除

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • public function delete_array_element($array, $i) {
  •     $len = count($array);
  •     for ($j = $i; $j < $len; $j ++) {
  •       if (isset($array[$j + 1])) {
  •         $array[$j] = $array[$j + 1];
  •       }
  •     }
  •     array_pop($array);
  •     return $array;
  • }
  • public function test() {
  •     $arr = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
  •     var_dump($arr);
  •     echo '<br/>';
  •     $arr = $this->delete_array_element($arr, 4);
  •     var_dump($arr);
  • }
  • 字符串翻转

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • public function strrev($str) {
  •     $rev_str = '';
  •     if ($str == '') {
  •       return 0;
  •     }
  •     for ($i = (strlen($str) - 1); $i >= 0; $i --) {
  •       $rev_str .= $str[$i];
  •     }
  •     return $rev_str;
  • }
  • public function test() {
  •     $arr = 'hellow wolrd';
  •     var_dump($arr);
  •     echo '<br/>';
  •     $arr = $this->strrev($arr);
  •     var_dump($arr);
  • }
  • 希望本文所述对大家PHP程序设计有所帮助。

    原文链接:https://blog.csdn.net/qq_35349114/article/details/89950389

    标签:
    上一篇下一篇

    猜您喜欢

    热门推荐