PHPによるアルゴリズム ソート 基本交換法(バブル・ソート)

snow
2022-08-26
snow
2022-08-26

基本交換法(バブル・ソート)


説明


基本交換法:隣接2項目を順次交換する
原理 → 簡単
交換回数 → 多い

アルゴリズム:

隣接2項目を比較し、後の項目が前の項目より小さければ、両項目を入れ替えを行うことを繰り返す。

PHPソース:


```
<?php

/**
* 1000以内の乱数を生成する
*
* @param int $count
* @return array
*/
function createRandArray($count) {
$arr = [];
for ($i=0; $i<$count; $i++) {
$arr[] = mt_rand(1, 1000);
}
return$arr;
}

/**
* 表示
*
* @param array $arr
*/
function sprint($arr) {
foreach ($arr as $num) {
print("$num ");
}
print("\n");
}

/**
* ソート
*
* @param array $arr
* @return array
*/
function bulleSort($arr) {

$count = count($arr);
for ($i=0; $i<$count-1; $i++) {
for ($j=$count-1; $j>$i; $j--) {
if ($arr[$j] < $arr[$j-1]) {
$t = $arr[$j];
$arr[$j] = $arr[$j-1];
$arr[$j-1] = $t;
}
}
}
return$arr;
}

$arr = createRandArray(10);
sprint($arr);

$arr = bulleSort($arr);
sprint($arr);
<?php

/**
* 1000以内の乱数を生成する
*
* @param int $count
* @return array
*/
function createRandArray($count) {
$arr = [];
for ($i=0; $i<$count; $i++) {
$arr[] = mt_rand(1, 1000);
}
return$arr;
}

/**
* 表示
*
* @param array $arr
*/
function sprint($arr) {
foreach ($arr as $num) {
print("$num ");
}
print("\n");
}

/**
* ソート
*
* @param array $arr
* @return array
*/
function bulleSort($arr) {

$count = count($arr);
for ($i=0; $i<$count-1; $i++) {
for ($j=$count-1; $j>$i; $j--) {
if ($arr[$j] < $arr[$j-1]) {
$t = $arr[$j];
$arr[$j] = $arr[$j-1];
$arr[$j-1] = $t;
}
}
}
return$arr;
}

$arr = createRandArray(10);
sprint($arr);

$arr = bulleSort($arr);
sprint($arr);

```

結果:


```
$ php bubble.php
4563006686459926951515009182
82 91 151 300 456 500 645 668 695 992
```