コードを読んでバブルソートを理解しました。健忘録です。まだ、プログラミングをはじめて3か月なのでやっとこ理解できた感じです。(*'ω'*)

$a = [98, 10, 56, 8]; という配列をソートします。

$a = [98, 10, 56, 8];

001-01-bubble


$iの1回転目
 $jの1回転目
 $i = 0
 $j = 1

98>10 //成立する
$tmp 98 = $a[0] 98
$a[0] 10 = $a[1] 10
$a[1] 98 = $tmp 98

$a[0]の98と$a[1]の10が入れ替わりました。

001-02-bubble


$iの1回転目
 $jの2回転目
 $i = 0
 $j = 2

10>56 //成立しない

ここでは、入れ替わりはありません。

001-03-bubble


$iの1回転目
 $jの3回転目
 $i = 0
 $j = 3

10>8 //成立する
$tmp 10 = $a[0] 10
$a[0] 8 = $a[3] 8
$a[3] 10 = $tmp 10

$j = 4になると、$j < count($a)は4なので成立しないため、$jループが終わる。

$a[0]の10と$a[3]の8が入れ替わりました。

001-04-bubble


$iの2回転目
 $jの1回転目
 $i = 1
 $j = 2

98>56 //成立する
$tmp 98 = $a[1] 98
$a[1] 56 = $a[2] 56
$a[2] 98 = $tmp 98

$a[1]の98と$a[2]の56が入れ替わりました。

001-05-bubble


$iの2回転目
 $jの2回転目
 $i = 1
 $j = 3

56>10 //成立する
$tmp 56 = $a[1] 56
$a[1] 10 = $a[3] 10
$a[3] 56 = $tmp 56

$j = 4になると、$j < count($a)は4なので成立しないため、$jループが終わる。

$a[1]の56と$a[3]の10が入れ替わりました。

001-06-bubble


$iの3回転目
 $jの1回転目
 $i = 2
 $j = 3

98>56 //成立する
$tmp 98 = $a[2] 98
$a[2] 56 = $a[3] 56
$a[3] 98 = $tmp 98

$j = 4になると、$j < count($a)は4なので成立しないため、$jループが終わる。

$i = 3になると、$i < count($a)-1は3なので成立しないため、$iループが終わる。

$a[2]の98と$a[3]の56が入れ替わりました。

001-07-bubble

これで、小さい順のソートができました。

大きい順にするときは、if($a[$i] < $a[$j])の不等号を逆にすると降順になります。


おすすめの記事
スポンサーリンク