やりたいこと・疑問点
挿入ソートを実装しています。
並べ替える過程を追いたくて、@resultに過程をpushしています。
同じ位置で
p ary
@result << ary
を書いているのに@resultには、ソート済みの配列が入っているのはなぜでしょうか?
該当のソースコード
ruby
1N=gets.to_i 2A=gets.split.map(&:to_i) 3 4@result = [] 5def insertionSort(tmp, n) 6 # ary=tmp.clone ←変更前 7 ary = Marshal.load(Marshal.dump(tmp)) 8 p [tmp.object_id, ary.object_id] 9 p [tmp[0].object_id, ary[0].object_id] 10 11 (1...n).each{|i| 12 p ary 13 @result << ary 14 15 v = ary[i] 16 j = i - 1 17 18 while j >= 0 && ary[j] > v do 19 ary[j+1] = ary[j] 20 j -= 1 21 end 22 ary[j+1] = v 23 } 24end 25 26insertionSort(A, N) 27p @result
入力
6
5 2 4 6 1 3
出力
[13220980, 13220860] # 異なる
[11, 11] # 同じ
[5, 2, 4, 6, 1, 3]
[2, 5, 4, 6, 1, 3]
[2, 4, 5, 6, 1, 3]
[2, 4, 5, 6, 1, 3]
[1, 2, 4, 5, 6, 3]
[[1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6]]
インスタンス変数 `@result` はどのような意図でしょうか.このコードはクラス定義の内部から抜粋したものですか?
>Rubyでわからないことがあります
タイトルには要件を。
https://teratail.com/help/question-tips#questionTips3-1
すみませんm(__)m
修正しました。