プログラミングしたり。

HTML/CSS/JavaScript/PHPを中心にWebサイト作ったり。Webサービス作ったり。

配列関連のアルゴリズム

アルゴリズムの勉強をするために、「アルゴリズム」のキホンという本を読んでいます。 わかりやすい本なのでアルゴリズムを学び始めるのよいかなと思います。

本の中では、言葉と図によって、アルゴリズムが説明されていますので、 PHPのコードを記述して自分の中にしっかりと落とし込んでいきたいと思います。

配列データの要素数を求める

PHPですと、count()関数を使用することによって、 ほしい情報を得ることができますが、考え方を理解することも重要かと思います。

配列データの最後に番兵データを格納することで要素数を数える方法が紹介されていました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//数を数えたい配列
$arr = array(20, 5, 60, 48, 12, 30);

//番兵データとして、配列データになり得ない値を配列の最後に格納
$arr[] = -1;

//要素数を数えるための変数countを値0で初期化する
$count = 0

//番兵データと等しくなるまで変数countをカウントアップする
for($i=0;$arr[$i]!=-1;$i++){
  $count++;
}

echo $count;
//出力結果:6

配列データ内の最大値を求める

配列データ内の最大値の求め方は、最大値を保持する変数を用意して、配列内のデータを順番に比較していきます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//配列arr内の最大値を求める
$arr = array(20, 5, 60, 48, 12, 30);

//最大値を保持する変数を用意する。このとき、対象データが取りうる値よりも小さい値で初期化
$max = -1;
//配列データと最大値保持変数maxを比べて、配列データが大きかった場合、その値を$maxに格納する
for($i=0;$i<count($arr);$i++){
  if($arr[$i] > $max){
      $max = $arr[$i];
  }
}

echo $max;
//出力結果:60

今はソートのアルゴリズムについて書かれた章を読んでいますので、 またコードに落としていきたいと思います。

Comments