〜 ナンバー 〜
データを整列(バブルソート)

並べ替えアルゴリズムに、バブルソートと呼ばれる方法があります。
このソートは隣接する要素の大小を比較して、要素内の値入れ替えを繰り返すものです。
値の大きいもの(または小さいもの)が、前方または後方へ徐々に動いていく動きをするところから、
泡が立ち上っていくように見えるので、この名称が名付けられたようです。
下記のサンプルは、このバブルソートアルゴリズムでランダムな数値を並べてみたいと思います。
尚、数値でなく文字列であっても、文字コードを使用することで、コード順の整列ができます。
HSP2とHSP3の両方のサンプル内で、ビット反転を使用している箇所がありますが、
これはコチラで紹介している変数の入れ替え作業です。参考までに。
	
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
	num = 20
	dim rv, num
	// 乱数セット
	randomize
	repeat num
		rnd rv.cnt, 9999
		rv.cnt++
	loop
	pos 10, 10
	repeat num : mes rv.cnt : loop
	// ソート
	repeat num
		c = cnt
		repeat num - c - 1, cnt + 1
			// 比較する演算子が「<」だと降順、「>」だと昇順
			if rv.c > rv.cnt {
			  rv.c   = rv.c   ^ rv.cnt
			  rv.cnt = rv.cnt ^ rv.c
			  rv.c   = rv.c   ^ rv.cnt
			}
		loop
	loop
	// 結果表示
	pos 100, 10
	repeat num : mes rv.cnt : loop
	stop
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
	dim rv, 20
	// 乱数セット
	randomize
	foreach rv
		rv.cnt = rnd(9999) + 1
	loop
	pos 10, 10
	foreach rv : mes rv.cnt : loop
	// ソート
	foreach rv
		c = cnt
		repeat length(rv) - c - 1, cnt + 1
			// 比較する演算子が「<」だと降順、「>」だと昇順
			if rv.c > rv.cnt {
			  rv.c   = rv.c   ^ rv.cnt
			  rv.cnt = rv.cnt ^ rv.c
			  rv.c   = rv.c   ^ rv.cnt
			}
		loop
	loop
	// 結果表示
	pos 100, 10
	foreach rv : mes rv.cnt : loop