rubyで挿入ソート
def insert(ary) res = [] ary.each do |value| if res.length == 0 res << value else res.length.times do |j| if value <= res[j] (res.length - 1).downto(j) do |k| res[k + 1] = res[k] end res[j] = value break end end end end res end assert_equal([3,4,8],@obj.insert([8,3,4])) assert_equal([1,2,3],@obj.insert([3,2,1])) assert_equal([1,2,3,4,5,6,7,8],@obj.insert([8,4,3,7,6,5,2,1])) Started . Finished in 0.000682 seconds. ------------------------------------------------------------------------------- 1 tests, 6 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed ------------------------------------------------------------------------------- 1466.28 tests/s, 8797.65 assertions/s
スマホでtermux使いながら、今日一日使って書いた。
配列内の値をスライドさせる方法が思いついたらできた。
アルゴリズムでこれが実装が簡単だって書いてあったけど、配列内の値をスライドさせるコードって初めて書いたぞふざけんな。
参考にしたサイト。答えのコードは見ていない。答えのコード見て勉強したほうがいいな。でも、コード見るの苦手なんだよな…。
挿入ソート : アルゴリズム