質問: k + 1 end ``` の部分も、本当はtimesメソッドを使ってみたかったのですが、うまくいきませんでした。 どのようにするのが適切なのでしょうか。 ご教示のほど、よろしくお願いいたします。
回答: > > 配列 [10,2,12,7,16,8,13,1]に対して、 > > ソート前の状態では`i`が10、`k`が2、`min`は1が当てはまり、繰り返されるたびに、配列の先頭が+1されていくと言う認識で正しいでしょうか? > > > `i`,`k`,`min`は要素番号を示すので、「`i`は0, `k`は~~2~~ 1, 1回目のソート処理の`min`は7」が正しいです。 配列の先頭が+1というのはまあ合っているでしょう。 > > 上記が正しいと仮定して、min = iとすることでiと比較した最小値が取得できるのは何故でしょうか? > > > 何もない状態で比較することはできないので、仮に先頭の位置を最小と置いているだけです。 `i`と比較しているわけではなく、`min`, `k`を使って比較してます。 > > 本当はtimesメソッドを使ってみたかったのですが、うまくいきませんでした。 > > どのようにするのが適切なのでしょうか。 > > > timesは0からN-1までの値でループするメソッドなので、そのまま使うと正しく処理できません。 どうしてもtimesがいいということであれば、0〜`配列.length-k`となるようにtimesを使い、 `k`の値にループ値を加算するようにすれば良いかと思います。