バブルソート
バブルソートは一応理解しているつもりなので、さくっといきたいと思います。
Pseudocode
1.フラグ変数を用意する、値はfalseが未完了という意味に取りやすいので、falseでいきます。
2.ソートするためのループを用意します。(補足:何度もループさせたいので、whileかuntilを使いますが、フラグ変数がfalseなのでuntilを使います。)
3.さらに実際に配列を並び変えるためのループ(繰り返し処理)を用意します。(補足:すでにループの中に入っているので配列の長さ分だけ繰り返して、抜けてくれれば良いです。)
4.配列の[i]と[i+1]を比べる条件を書きます。[i]が[i+1]より大きければ5の処理を行います。
5.ここでは各配列のインデックスを指定して、入れ替えます。具体的には[i] には [i + 1]、[i + 1]には[i]を入れて交換を行います。
6.このままでは一回で抜けてしまうので、一番元のuntilループに完了の印としてフラグ変数にtrueを入れます。5のif分には未完了のfalseを入れます。
7.最後にuntilループを抜けた後配列を返します。
def bubble_sort(arr) sorted = false #ここで until sorted sorted = true (arr.length - 1).times do |i| if arr[i] > arr[i+1] arr[i+1], arr[i] = arr[i], arr[i+1] sorted = false end end end return arr end
コードを上からの流れで見ていくと、 ということです。