拆开分成几千份进行排序再合并。

首先先创建一个1亿个QQ号的txt。

PHP code?

// 创建一亿个QQ号的txt (大约需85~100秒)

set_time_limit(0);

$fn = 'qq.txt';

$fp = fopen($fn, 'w');

$st = microtime(true);

$l = range(0,10000);

shuffle($l);

foreach ($l as $k=>$v)

{

$arr = range($v*10000+10000,10000*($v+1)+9999);

shuffle($arr);

fputs($fp,implode("\n", $arr)."\n");

unset($arr);

}

echo microtime(true)-$st;

?>

稍等一两分钟1亿个随机QQ创建完成了。

QQ号码范围为>10000。文件大小大概有840MB。

下面就进行分类划分成几千份文件。

以QQ号码长度为文件夹,QQ号码前3位为文件名。

PHP code?

// 长度号码分类 (大约需360~400秒)

set_time_limit(0);

$st = microtime(true);

if(!is_dir('qq_no')) mkdir('qq_no');

$file = fopen('qq.txt', 'r');

$i=0;

$end_s = '';

while(!feof($file))

{

$g = 1042*1024;

fseek($file,$g*$i);

$s = fread($file, $g);

$end = strrpos($s, "\n");

$arr_s = $end_s.substr($s, 0, $end);

$end_s = substr($s, $end);

$arr = explode("\n", $arr_s);

foreach ($arr as $k=>$v)

{

if($v!='')

{

$tag = "$v[0]$v[1]$v[2]";

$text_arr[strlen($v)][$tag][] = $v;

}

}

foreach ($text_arr as $k=>$v)

{

$n_dir = 'qq_no/'.$k;

if (!is_dir($n_dir)) mkdir($n_dir);

foreach ($v as $tag=>$val)

{

$n_tf = fopen($n_dir.'/'.$tag.'.txt', 'a+');

fputs($n_tf,implode("\n",$val)."\n");

}

}

unset($text_arr);

++$i;

}

echo microtime(true)-$st;

?>

最后就要每个文件进行排序合并数据了。

PHP code?

// 排序完成拉 (800~920秒)

set_time_limit(0);

$st = microtime(true);

$qq_done = fopen('qq_done.txt', 'a+');

$root = 'qq_no';

$dir_array = scandir($root);

foreach ($dir_array as $key=>$val)

{

if ($val != '.' && $val != '..')

$dirs[$val] = scandir($root.'/'.$val);

}

foreach ($dirs as $key=>$val)

{

foreach ($val as $v)

{

if ($v != '.' && $v != '..')

{

$file = $root. '/' . $key . '/'. $v;

$c = file_get_contents($file);

$arr = explode("\n", $c);

sort($arr);

fputs($qq_done, implode("\n",$arr));

unlink($file);

}

}

rmdir($root. '/' . $key);

}

rmdir($root);

echo microtime(true)-$st;

?>

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php1到5000排序,php排序1亿个号码相关推荐

  1. java排序——桶排序

    2019独角兽企业重金招聘Python工程师标准>>> package jxau.blueDot.lyx;import java.util.ArrayList; import jav ...

  2. 【数据结构-排序】1. 图解插入排序三种实现(插入排序/折半排序/希尔排序)

    直接插入排序(插入排序) 排序思想 对于一个数组 A[0,n] 的排序问题,假设认为数组在 A[0,n-1] 排序的问题已经解决了. 考虑 A[n] 的值,从右向左扫描有序数组 A[0,n-1] ,直 ...

  3. python 排序_Python 排序了解一下?

    脚本之家 你与百万开发者在一起 文 | 潮汐 来源:Python 技术「ID: pythonall」 排序是每个开发人员都需要掌握的技能.排序是对程序本身有一个全面的理解.不同的排序算法很好地展示了算 ...

  4. boost::sort模块实现使用最坏情况分布进行扩展排序的排序示例

    boost::sort模块实现使用最坏情况分布进行扩展排序的排序示例 实现功能 C++实现代码 实现功能 boost::sort模块实现使用最坏情况分布进行扩展排序的排序示例 C++实现代码 #inc ...

  5. 堆排序算法c语言筛选法,【排序】排序算法之选择排序

    排序算法之选择排序 罗朝辉(http://www.cppblog.com/kesalin) 转载请注明出处 排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行 ...

  6. 算法-排序-k排序(算法导论第三版第八章思考题8-5)

    算法-排序-k排序 算法导论第三版第八章思考题8-5 时间复杂度Θ(nlg(n/k)). 利用最小堆完成,把元素分成k个堆,每个堆大小⌈n/k⌉. 利用堆作为子排序稳定,也可以采用其他排序作为子排序, ...

  7. 休眠提示:排序和排序

    让我们介绍另一个休眠性能提示. 你还记得以前的休眠的模式后 ? 我们有一个与一对多协会有关的星际飞船和军官. @Entity public class Starship {@Id @Generated ...

  8. 合并排序算法排序过程_合并排序| 用于大型输入的最佳排序算法之一

    合并排序算法排序过程 What is sorting? 什么是分类? Sorting allows us to process our data in a more organized and eff ...

  9. 排序上---(排序概念,常见排序算法,直接插入,希尔排序,直接选择排序,堆排序)

    排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作. 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对 ...

  10. 合并排序算法排序过程_外部合并排序算法

    合并排序算法排序过程 外部分类 (External sorting) External sorting is a technique in which the data is stored on th ...

最新文章

  1. 【 Verilog HDL 】Verilog 迭代连接运算符
  2. checkbox的相关知识点
  3. 双口RAM和多模块存储器
  4. dataframe两个表合并_DAXSQLPython实现报表项目存在串行的财务报表合并
  5. mysql+yes数据类型,怎样修改mysql列的数据类型?
  6. lwip+freeRTOS 故障容错 客户端主动发起连接
  7. [Flink] Not a valid protocol version This 1s not an HTTP port
  8. 跨平台的网络通信中间件:ICE和ACE
  9. xml 增 删 改 查
  10. C语言视频教程-谭浩强版-小甲鱼主讲—P1
  11. OpenCV学习笔记-Shi-Tomasi角点检测
  12. 我与忠和资本的未结之缘
  13. Win7 系统还原被管理员禁用
  14. android 关于px转化为dp,sp
  15. MATLAB 渐进式形态学滤波
  16. 收到一封钓鱼邮件……
  17. 提高自己的文字表达能力
  18. java过滤器python是啥_过滤器如何在python中使用softlayer API
  19. 孤尽训练营打卡日记day04--MySQL优化
  20. 第二篇python安装(1)

热门文章

  1. mlock - 将页面锁入内存
  2. 容斥原理模板(二进制表示)
  3. Linux源码编译nginx
  4. ceph_OSD的添加删除
  5. k8s-calico
  6. matlab 实用快捷键
  7. 乔布斯声称Google先决定当苹果的敌人
  8. Atitit 搜索工程师的知识点体系总结 目录 1.1. 理论类 索引 与查询 1 1.2. 类库类 1 1.3. 关联知识类 1 1.4. 其他 1 2. Ref 2 2.1. Atitit 文
  9. Atitit 身份证 证件编码规范
  10. Atitit. servlet 与 IHttpHandler  ashx  listen 和HttpModule的区别与联系 原理理论 架构设计   实现机制    java php c#.net j