zoukankan      html  css  js  c++  java
  • 算法与数据结构系列 ( 二 )

    基础准备

    我的使用验算的步骤是
    生成数据 -> 记录时间 -> 进行排序 -> 记录时间 -> 验算是否正确 -> 归类时间
    那么我们,需要生成数据的函数,达到毫秒的函数,可以测算出是否已经排序成功的函数

    首先生成可用测试的随机数据(函数)

    • 这是验算的数据,所以只需要混交的就行
    • 通过传入所需要生成的总数,生成 num 条数据,比如:10 条
    • 数据内容是随机从开始到结束的数字,比如:从 1 到 10
    • 注意 rangeR 要比 rangeL 小
    /**
    * 生成随机数据
    * @param int $num 需要生成的总数
    * @param int $rangeL   开始数字
    * @param int $rangeR   结束数字
    * @return array
    */
    function generateSort(int $num,int $rangeL,int $rangeR):array {
      $sort = array();
      for ($i = 0; $i < $num;$i++){
          $sort[$i] = rand($rangeL,$rangeR);
      }
      return $sort;
    }
    

      

    还有生成一种近乎有序的数据(函数)

    • 和上面类似
    • 但是随机最小值会往上走,达到近乎有序
    /**
    * 生成随机数据
    * @param int $num 需要生成的总数
    * @param int $rangeL   开始数字
    * @param int $rangeR   结束数字
    * @return array
    */
    function generateSort(int $num,int $rangeL,int $rangeR):array {
      $sort = array();
      for ($i = 0; $i < $num;$i++){
          $sort[$i] = rand($rangeL + $i,$rangeR);
      }
      return $sort;
    }
    

      

    验算是否排序正确的(函数)

    • 我这里做的比较简单
    • 循环一次,当上一个数字,比下一个数字要小的时候则是不正确
    • 在我们生成数字的时候,是绝对不会相对有序的
    /**
    * 验算是否正确
    * @param array $sort
    * @return bool
    */
    function isSort(array $sort):bool {
      $n  =   count($sort);
      for($i = 0; $i < $n - 1; $i++){
          if($sort[$i] > $sort[$i + 1]){
              return false;
          }
      }
      return true;
    }
    

      

    获取毫秒时间(函数)

    • 在 php 中是没有毫秒函数的,只能自己写一个
    • 在数据量小的情况下,算法是按照毫秒计算的,不是秒
    /**
    * 获取毫秒时间
    * @return float
    */
    function millisecond():float {
      list($msec, $sec) = explode(' ', microtime());
      return (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);
    }
    

      

    打印函数

    • 因为我们用的是原生的 php,而且用的是 fpm 。
    • 数据打印在浏览器上,为了我们的视觉感受,我觉得这个有必要
    /**
    * 一个好看一点的打印函数
    * @param $var
    */
    function dump($var){
      ob_start();
      var_dump($var);
      $output = preg_replace('/]=>
    (s+)/m', '] => ', ob_get_clean());
      if (!extension_loaded('xdebug')) {
          $output = htmlspecialchars($output, ENT_SUBSTITUTE);
      }
      $output = '<pre>' . $output . '</pre>';
      echo($output);
    }
    

      

    更多学习内容请访问:

    八重樱:腾讯T3-T4标准精品PHP架构师教程目录大全,只要你看完保证薪资上升一个台阶(持续更新)

  • 相关阅读:
    Arduino系列之智能家居蓝牙语音遥控灯(四)
    Arduino系列之光照传感器(三)
    address2line 定位 Android c++奔溃位置
    android UI线程安全问题
    android 后台服务定时通知
    eclipse 完全智能提示
    IOS 7 Xcode 5 免IDP证书 真机调试(转载)
    DS5 调试 android c++
    javap -s 查看java方法签名
    ndk-stack 调试 android c++ 代码崩溃位置
  • 原文地址:https://www.cnblogs.com/a609251438/p/12540211.html
Copyright © 2011-2022 走看看