PHPによるアルゴリズム ソート 基本選択法
2022-08-26
2022-08-26
説明
基本選択法:数列から最大(最小)を探すことを繰り返す。
比較回数ー> 多い
交換回数ー> 少ない
アルゴリズム:
1、対象項目は i を 0〜N-2 移しながら、以下を繰り返す。- 対象項目を最小値の初期値とする。
- 対象項目+1〜N-1項目について以下を繰り返す。
- 最小項目を探し、その項目番号をsに求める
- i項目とs項目を交換する
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 basicSort($arr) {
$count = count($arr);
for ($i=0; $i<$count; $i++) {
$min = $arr[$i];
$s = $i;
for ($j=$i+1; $j<$count; $j++) {
if ($arr[$j] < $min) {
$min = $arr[$j];
$s = $j;
}
}
$t = $arr[$i];
$arr[$i] = $arr[$s];
$arr[$s] = $t;
}
return$arr;
}
$arr = createRandArray(10);
sprint($arr);
$arr = basicSort($arr);
sprint($arr);
```
結果:
```
$ php basic.php
744 560 30 644 712 576 245 77 219 275
30 77 219 245 275 560 576 644 712 744
```