2017-10-25 17 views
-1

申し訳ありませんが、多分簡単な質問ですが、私はそれを把握することはできません。私は配列をソートプログラムがあります。Ruby。アルゴリズムの挿入の並べ替え

def insertionsort(num) 
    for j in 1..(num.length - 1) 
     key = num[j] 
     i = j - 1 
     while i >= 0 and num[i] > key 
      num[i+1] = num[i] 
      i = i - 1 
     end 
     num[i+1] = key 
    end 
end 

ar = Array.new(10) { rand(1...11) } 

insertionsort(ar) 
insertionsort(ar) 
insertionsort(ar) 
insertionsort(ar) 
insertionsort(ar) 

p ar 

しかし、最初のソート挿入ソート(AR)の後、私は同じ配列を使用するために必要がありますが、最初の並べ替え変数の後にARソートされた配列に

+0

期待どおりの結果をより良く説明できますか?私はあなたの問題を理解していない –

答えて

0

を取るだけで、あなたのクローンを作成します以前のように最初の配列を維持するための配列:

def insertionsort(num) 
    res = num.dup 
    for j in 1..(res.length - 1) 
    key = res[j] 
    i = j - 1 
    while i >= 0 and res[i] > key 
     res[i+1] = res[i] 
     i = i - 1 
    end 
    res[i+1] = key 
end 
res 
end 

ar = Array.new(10) { rand(1...11) } 
res = insertionsort(ar) 
p ar 
p res 
関連する問題