统计这个文件里面每个数字重复出现的次数

qq277049 2012-02-03 01:16:06
1生成一个10000行文本文件,每行一个随机数字
2统计这个文件里面每个数字重复出现的次数


//求更有效率的方法
<?php
//1生成一个10000行文本文件,每行一个随机数字
for($i=0;$i<10000;$i++)
{
file_put_contents("1.txt",rand(0,1000)."\n",FILE_APPEND);
}
//2统计这个文件里面每个数字重复出现的次数
$a=fopen("1.txt","r");
$list=array();
$tj=array();
while($b=fgets($a))
{
$list[]=$b;
if(in_array($b,$list))
{
$tj[$b]+=1;
}
}
//$re=array_count_values($list); //不能使用这个函数
echo "<pre>";
var_dump($tj);
echo "</pre>";

...全文
182 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
amani11 2012-02-03
  • 打赏
  • 举报
回复
哪里不对呢?

依照你的思路,这是O(n)的复杂度了,原来给出的代码是O(n^2)

实际上,array_count_values也是需要遍历数组的,算法复杂度也是O(n)

只不过内置函数,通常执行时间更短一些
qq277049 2012-02-03
  • 打赏
  • 举报
回复
我给别人发了。人家效率低下
amani11 2012-02-03
  • 打赏
  • 举报
回复
看错变量了,统计应该是

++$tj[$b]; $tj[$b] = 1;
amani11 2012-02-03
  • 打赏
  • 举报
回复
按你的思路,统计部分,这样更好,


while($b=fgets($a))
{
if(isset($list[$b]))
{
++$list[$b];
}
else
{
$list[$b] = 1;
}
}
xiachao2008 2012-02-03
  • 打赏
  • 举报
回复
你不是统计了吗

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧