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行目
    	REPEAT
    
    flgがFALSEになるまで繰り返す。
  2. 4行目
    		FOR n = 0 TO UBound(array) - 1
    
    n=0から配列の要素数-1だけ繰り返す。
  3. 5-8行目
    			IFB array[n] > array[n+1] THEN
    				swap(array[n], array[n+1])
    				flg = TRUE
    			ENDIF
    
    もし配列のn番目がn+1番目より大きかったらその2つを入れ替え、flgをTRUEにする。

バブルソート

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

アルゴリズム

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