假设一个文件里面有一百万行乱序的六位数正整数,请用最快的方法将数值从小到大排序,并去重,将结果写到一个文件中。

解决方案 »

  1.   

    假定你的数据在文件里是一行一个排列的
    $in = fopen('文件1', 'r');
    file_put_contents('文件2', '');
    $out = fopen('文件2', 'r+');
    $d = 6 + strlen(PHP_EOL);
    while($r = fgets($in)) {
      $r = trme($r);
      fseek($out, $r * $d);
      fputs($out, $r . PHP_EOL);
    }
    fclose($out);
    fclose($in);
      

  2.   

    楼上的代码
      r = trme($r);
      fseek($out, r * d);
      fputs($out, r . PHP_EOL);改为  $r = trim($r);
      fseek($out, $r * $d);
      fputs($out, $r . PHP_EOL);