zoukankan      html  css  js  c++  java
  • 遍历日志文件并打印

    <?php
    error_reporting(E_ALL);
    ini_set('display_errors', 1);

    function load($file)
    {
      //No.1
      //开始写代码,读取日志文件
      $file = fopen($file,'r');
      $contents = array();
      while(!feof($file))
      {
        $contents[] = fgets($file);
      }
      return $contents;
    }

    function eliminate($lines)
    {
      $new = array();
      foreach($lines as $line)
      {
        list($dul,) = explode("\t", $line, 2);

        if(isset($new[$dul]))
        {
          $line = str_replace($dul,"\t",$line);
        }
        $new[$dul][] = $line;
      }
      return $new;
    }

    function qSort($array)
    {
      $length = count($array);
      if(count($array)<=1)
        return $array;
      //No.2
      //开始写代码,对时间戳进行从小到大排序 快速排序
      $left_array=$right_array=array();
      //使用for循环进行遍历,把第一个元素当做比较的对象
      for($i=1;$i<$length;$i++)
      {
        //判断当前元素的大小
        if($array[$i]<$array[0]){
          $left_array[]=$array[$i];
        }else{
          $right_array[]=$array[$i];
        }
      }
      //递归调用
      $middle=$array[0];

      //end_code
      return array_merge(qSort($left_array),array($middle),qSort($right_array));
    }

    $newFile = '';
    $data = eliminate(load('aa.log'));
    //No.3
    //开始写代码,调用函数,将日志中的数据排序,并将重新排好序的数据写入文件
    $keys = array_keys($data);
    //sort($keys); //其实不用快速排序 直接将键值sort即可
    $keys = qSort($keys);
    $newsFile = array();
    foreach($keys as $value)
    {
      $newsFile[] = implode('\n', $data[$value]);
    }
    $newsFile = implode(' ', $newsFile);
    //end_code
    file_put_contents('bb.dat',$newsFile);
    ?>

    面试题:考察 快速排序,文件的用法

    当时时间的限制没做出来,后来花了一个小时终于弄出来。看来我还是很笨的。。。加油。。。找工作。。。

  • 相关阅读:
    浅谈Huffman树
    CF884D:Boxes And Balls
    MySQL单表查询(重要)
    MySQL字段完整性约束(重要)
    MySQL数据类型(重要)
    数据库基本操作
    MySQL权限管理
    MySQL存储引擎概述
    数据库基础
    并发编程小结
  • 原文地址:https://www.cnblogs.com/sxiangyues/p/6529924.html
Copyright © 2011-2022 走看看