配列を昇順にソートしたとき，要素とソート前の番号を紐づけて保持したい


配列を昇順にソートしたとき，要素とソート前の番号を紐づけて保持したいです．

例えば，以下の用な処理を実現したいです．

[code]

    arr = [5, 8, 1, 3, 4, 7, 9, 6]
    
[/code]

を昇順にソートして，何らかの方法で，「数値:ソート前の要素番号」へ．

[code]

    arr_afterSort = [1:2, 3:3, 4:4, 5:0, 6:7, 7:5, 8:1, 9:6]
    
[/code]

`Hash`を使う方法も考えたのですが，Keyは文字列，valueは数値でしか指定できないので私が実現したいことができません．  
また，`.sort`で昇順にしても要素番号がわからなくなるかと思います．  
あと，`require 'active_support'`，`require
'active_support/core_ext'`を使って配列を`.deep_dup`して，ソートした配列をdupした配列と同じ数字かを検索して要素番号を取得する，も考えたのですがスマートな手法ではなく，強引な感じがします．

どなたかご教授よろしくおねがいします．




これでどうでしょう

[code]

    [5, 8, 1, 3, 4, 7, 9, 6].each_with_index.sort
    # => [[1, 2], [3, 3], [4, 4], [5, 0], [6, 7], [7, 5], [8, 1], [9, 6]]
    
[/code]

Hashが良ければto_hで

[code]

    [5, 8, 1, 3, 4, 7, 9, 6].each_with_index.sort.to_h
    # => {1=>2, 3=>3, 4=>4, 5=>0, 6=>7, 7=>5, 8=>1, 9=>6}
    
[/code]




これでどうでしょう

[code]

    [5, 8, 1, 3, 4, 7, 9, 6].each_with_index.sort
    # => [[1, 2], [3, 3], [4, 4], [5, 0], [6, 7], [7, 5], [8, 1], [9, 6]]
    
[/code]

Hashが良ければto_hで

[code]

    [5, 8, 1, 3, 4, 7, 9, 6].each_with_index.sort.to_h
    # => {1=>2, 3=>3, 4=>4, 5=>0, 6=>7, 7=>5, 8=>1, 9=>6}
    
[/code]

