【发布时间】:2021-06-19 05:45:59
【问题描述】:
我有一个非常大的文件,如下所示
45313904626416486480179546360796323469287116537171
465573254230695450538671922463236910370073247307526
5906233480284069039032926795367974774430427486375
这种num怎么排序?
结果应该是这样的(真实文件是 100000 行):
5906233480284069039032926795367974774430427486375
45313904626416486480179546360796323469287116537171
465573254230695450538671922463236910370073247307526
我尝试一下
MyFlexibleArray := TList<UInt64>.Create;
AssignFile(F, OpenTextFileDialog1.FileName);
Reset(F);
repeat
Readln(F, str);
MyFlexibleArray.Add(UInt64(str));
until EOF(F);
CloseFile(F);
MyFlexibleArray.Sort;
使用 TStringList,结果不是以自然方式排序的!
任何帮助将不胜感激。
【问题讨论】:
-
最大 UInt64 为 18,446,744,073,709,551,615,比您的数字小很多。您可以在数字前面添加零,以便它们全部对齐,对它们进行字符串排序并在删除前导零的情况下输出。
-
谁会上传一个 未压缩 大小的文本文件到主机上,然后它会在几天内消失?它包含像
5079598143104014379457667649331467875308351922_8这样的行,_是一个 NUL 字节。以后有需要这个文件的可以回复我。 -
如果你需要做更多(数学)然后只是对这些大数字进行排序,有一个库:github.com/rvelthuis/DelphiBigNumbers