2013-10-14 42 views
1

所以我一直在實施幾種不同的排序方法(快速,合併和插入),碰到似乎有點不切實際,並想知道是否有人可以解釋背後的思考過程行爲。排序算法在Ruby排序只有第一位數字

名單我嘗試排序如下:

[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"] 

提前感謝!

+3

你可以顯示你的代碼,它看起來有點可疑,你的輸出轉換爲字符串,在這種情況下,序列是完全有效的。 – rb512

回答

0

各自的兩個輸出,你是在OP demostrating可以按如下方式獲得:

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"] 

現在究竟是什麼問題,再?