bubbleSort

引数に指定された配列をソートします。参照引数で戻値はありません。

構文
bubbleSort( Var array )
引数
array
ソートする数値を格納した配列。参照引数。
戻値

プログラム

////////////////////////////////////////////////// // 【引数】 // array : ソートする数値を格納した配列。参照引数。 // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE bubbleSort(Var array[]) REPEAT DIM flg = FALSE FOR n = 0 TO UBound(array) - 1 IFB array[n] > array[n+1] THEN swap(array[n], array[n+1]) flg = TRUE ENDIF NEXT UNTIL !flg FEND ////////////////////////////////////////////////// // 【引数】 // a : 変数bと交換する値。参照引数。 // b : 変数aと交換する値。参照引数。 // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE swap(Var a, Var b) DIM tmp = a a = b b = tmp FEND ////////////////////////////////////////////////// // 【引数】 // 配列 : 上限値を求める配列 // 【戻値】 // 配列の上限値 ////////////////////////////////////////////////// FUNCTION UBound(array[]) RESULT = RESIZE(array) FEND

解説

  1. 2-10行目
    REPEAT DIM flg = FALSE FOR n = 0 TO UBound(array) - 1 IFB array[n] > array[n+1] THEN swap(array[n], array[n+1]) flg = TRUE ENDIF NEXT UNTIL !flg
    flg
    要素の入れ替えが行われたらTRUEを代入。
    すべての要素に対して隣接する要素と比較して順序が逆であれは入れ替える。これを要素数-1回繰り返す。入れ替えが行われなくなった時点で終了。

バブルソート

バブルソートは、ソートを行うアルゴリズムの一つです。リストにおいて隣り合うふたつの要素の大小を比較しながらソートを行います。基本交換法、隣接交換法ともいいます。

アルゴリズム

すべての要素に関して、隣接する要素を比較し大小が逆であれば入れ替える。これを要素数-1回繰り返すことでソートを行います。繰り返しは入れ替えが起こらなくなった時点で中断することができます。