php 1億の数字を並べ替える

巴扎黑
リリース: 2016-11-22 10:05:38
オリジナル
1212 人が閲覧しました

何千ものパーツに分解し、並べ替えて再度結合します。


まず、1億のQQ番号を含むtxtを作成します。

PHP code?



//1億個のQQ番号のtxtを作成(約85~100秒)

set_time_制限 (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 が作成されるまで 1 ~ 2 分待ちます。

QQ 番号の範囲は >10000 です。ファイルサイズは約840MBです。



以下は数千の文書に分類されます。

QQ番号の長さがフォルダーとして使用され、QQ番号の最初の3桁がファイル名として使用されます。

PHPコード?


//長さ番号分類(約360~400秒)

set_time_limit(0);

$st = マイクロタイム ( true);

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

$file = fopen('qq.txt', 'r'); =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]"; $v;

}

}

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

{

$n_dir = 'qq_no /'.$k;

if (! is_dir($ n_dir)) mkdir($n_dir); txt ', 'a+');

+ +$i;

}

echo microtime(true)-$st;

?>

最後に、ファイルを並べ替えてマージする必要があります。

PHP code?

// ソート完了(800~920秒)

set_time (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);

エコーmicrotime(true)-$st;

?>



ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!