按字母顺序排列的文件编号系统

时间:2014-07-25 19:54:54

标签: sequence filenames alphabetical

我经常希望输出一些名称为file-1file-2等的文件。但是,如果有10个或更多文件,则文件的字母顺序将与数字排序不同,因为file-10介于file-1file-2之间。

如果我事先知道会有多少个文件,我可以用0来填充较低的数字。但我想以“流式”的方式做到这一点,而不事先知道会有多少文件。

也就是说,我想要一个无限的字符串序列S(n),这样:

  1. S(i)按字典顺序排列在任何i
  2. 的S(i + 1)之前
  3. S(i + 1)可以在O(log(i))时间内计算,给定S(i)
  4. i <= n的字符串S(i)的最大长度为O(log(n))
  5. 是否有任何序列满足这些条件?

1 个答案:

答案 0 :(得分:0)

这是部分解决方案。为简单起见,这仅使用符号01

S(1)是字符串1。从S(i)生成S(i + 1):

  • 如果S(i)由所有1 s组成,则i + 1是2的幂。将log2(i + 1)0 s附加到S(i)。
  • 否则,递增由S(i)表示的二进制数。

序列开始:

11011110011011110111111110001111001,...

这会产生一系列字符串,其长度增长为O((log(i))^ 2),这不是我想要的。结果字符串也不是人类可读的。