标准的按文件名排序(字典序)会错误地将 `Exp-A-Run10` 排在 `Exp-A-Run2` 之前,这给数据分析带来了不便。
为了解决这个问题,需要一个能够理解数字真实大小的“自然排序”程序。
您能否编写一个程序,对给定的
排序规则:
程序需要从左到右逐段比较两个文件名
1. 分段处理 :将文件名分割成“连续的非数字字符串”和“连续的数字字符串”段落。例如,`ts010tc12` 被视为 `["ts", "010", "tc", "12"]`。
2. 逐段比较 :
如果
如果
如果一个是数字串,另一个是非数字串,则规定数字串排在前面。
3. 前缀优先 :如果一个文件名是另一个文件名的前缀(例如 `test` 和 `testcase1`),则较短的前缀名排在前面。
4. 稳定性 :排序必须是稳定的。如果根据以上所有规则,两个文件名被认为是等价的(例如 `Run01` 和 `Run1`),它们在输入中的原始相对顺序必须在输出中保持不变。
