2011-12-17 41 views
0

給定圖像列表,每個圖像都有一個字段位置。我編錯了方向。算法翻轉訂購號碼

該列表將根據其位置排序:1是最上面的項目。我不小心給了那個項目最高的數字,而它應該被給予最低。

我數點

[a=> 9, b=> 7, c=> 3, d=> 2, e=> 1] 

但我希望他們編號

[e=> 9, d=> 7, c=> 3, b=> 2, a=> 1] 

我應該使用這是什麼樣的算法? Ruby中的(僞)代碼的紅點:)

實際上,在該列表中大約有400個圖像,位置編號(Image.position)從1040開始並下降到1;這意味着有一些差距(例如341到600不存在)。

注1:顯然,我可以簡單地顛倒我的代碼中的順序。但這很醜陋,令人困惑,並打破了諸如「move_to_top」等方法的工作,我也需要重寫這些方法。

注2:該代碼似乎允許負數,所以每個位置編號的作用是* -1。但感覺難看和困惑。

回答

1

如果您只需要反轉編號,並且不關心使用了哪些精確數字,只需選取一個大於列表中最大數字的數字,並從中減去數字即可獲得新數字。

例如,如果選擇10,然後10-9 = 1,10-7 = 3,10-3 = 7,10-2 = 8,10-1 = 9。