Ruby中的排序算法仅按第一个数字排序

时间:2013-10-14 00:08:04

标签: ruby algorithm

所以我一直在实现一些不同的排序方法(快速,合并和插入),并且看起来有点不切实际,并且想知道是否有人可以解释行为背后的思考过程。

我试图排序的列表如下:

[20401, 11087, 2, 62176, 70095, 20947, 20098, 90914, 53475, 51251, 20065]

反馈是:

["11087", "2", "20065", "20098", "20401", "20947", "51251", "53475", "62176", "70095", "90914"]

如果我将2更改为00002,那么我会得到一个正确排序的列表

["00002", "11087", "20065", "20098", "20401", "20947", "51251", "53475", "62176", "70095", "90914"]

提前致谢!

1 个答案:

答案 0 :(得分:0)

您在OP中演示的相应两个输出可以通过以下方式获得:

a = [20401, 11087, 2, 62176, 70095, 20947, 20098, 90914, 53475, 51251, 20065]

a.sort.map &"%05d".method( :% )
#=> ["00002", "11087", "20065", "20098", "20401", "20947", "51251", "53475", "62176", "70095", "90914"]

a.map( &:to_s ).sort
#=> ["11087", "2", "20065", "20098", "20401", "20947", "51251", "53475", "62176", "70095", "90914"]

现在又是什么问题?