zoukankan      html  css  js  c++  java
  • PHP基础算法

    <?php

    //冒泡排序算法

    function maopao($arr){

      $len = count($arr);

      if($len<=1){

        return $arr;

      }

      for($i=1;$i<$len;$i++;){

        for($j=0;$j<$len-$i;$j++){

          if($arr[$j]>$arr[$j+1]){

            $temp  = $arr[$j];

            $arr[$j] = $arr[$j+1];

            $arr[$j+1] = $temp;

          }

        }

      }

      return $arr;

    }

    //快速排序算法

    function quick_sort($arr){

      $len = count($arr);

      if($len <= 1){

        return $arr;

      }

      $left = $right = array();

      for($i=1;$i<$len;$i++;){

        if($arr[0]>$arr[$i]){

          $left[] = $arr[$i];

        }else{

          $right[] = $arr[$j];

        }

      }

      $left = quick_sort($left);

      $right = quick_sort($right);

      return array_merge($left,array($arr[0]),$right);

    }

    function selectSort($arr) {
      //双重循环完成,外层控制轮数,内层控制比较次数
      $len=count($arr);
      for($i=0; $i<$len-1; $i++) {
        //先假设最小的值的位置
        $p = $i;
        for($j=$i+1; $j<$len; $j++) {
          //$arr[$p] 是当前已知的最小值
          if($arr[$p] > $arr[$j]) {
            //比较,发现更小的,记录下最小值的位置;并且在下次比较时采用已知的最小值进行比较。
            $p = $j;
          }
        }
        //已经确定了当前的最小值的位置,保存到$p中。如果发现最小值的位置与当前假设的位置$i不同,则位置互换即可。
        if($p != $i) {
          $tmp = $arr[$p];
          $arr[$p] = $arr[$i];
          $arr[$i] = $tmp;
        }
      }
      //返回最终结果
      return $arr;
    }


    function insertSort($arr) {
      $len=count($arr);
      for($i=1; $i<$len; $i++) {
        $tmp = $arr[$i];
        //内层循环控制,比较并插入
        for($j=$i-1;$j>=0;$j--) {
          if($tmp < $arr[$j]) {
            //发现插入的元素要小,交换位置,将后边的元素与前面的元素互换
            $arr[$j+1] = $arr[$j];
            $arr[$j] = $tmp;
          } else {
            //如果碰到不需要移动的元素,由于是已经排序好是数组,则前面的就不需要再次比较了。
            break;
          }
        }
      }
      return $arr;
    }

    ?>

  • 相关阅读:
    一文读懂Lua元表
    React-Antd Pro环境搭建
    如何在QT项目中引入Boost库
    .NET Core RSA PKCS8 格式 签名/验签
    Chrome控制台Network请求过滤
    字符串拼接null值问题
    复制文件夹需要考虑的问题
    [闻缺陷则喜]关于boost的想法
    公共库开发组
    docker-compose 一键部署分布式配置中心Apollo
  • 原文地址:https://www.cnblogs.com/missphp/p/9253758.html
Copyright © 2011-2022 走看看