アルゴリズム
さてさて、今回は久しぶりにアルゴリズム講座。
以前にソートのプログラミングでアルゴリズムを学びましたが、
今回は中学生でも解ける練習問題を一つ。
問.0〜100までの偶数の合計はいくつでしょう?
さて、この問題を解く方法は大きく3つあるといっていいでしょう。
1.0〜100まで偶数ならば加算(方法1)
2.0〜100まで2づつ増加していき加算(方法2)
3.0〜50まで加算して2倍(方法3)
さて、それぞれの方法はどれで解いても間違いではないです。
どれが一番速く解けるでしょう??
では実際のプログラムは以下のように
まずは方法1から
function even1
%
% 偶数の加算
% 方法1
%
%
n=0;
for ii = 1 : 100
if (mod(ii,2)==0)
n = n + ii;
end
end
disp(n);
|
function even2
%
% 偶数の加算
% 方法2
%
%
n=0;
for ii = 0 : 2 : 100
n = n + ii;
end
disp(n);
|
function even3
%
% 偶数の加算
% 方法3
%
%
n = 0;
for ii = 0 : 50
n = n + ii;
end
n=n*2;
disp(n);
|
| 方法 | データ数 100 | データ数 500 | データ数 1000 | データ数 10000 | データ数 100000 |
|---|---|---|---|---|---|
| 方法1 | 0.05 | 0.21 | 0.491 | 4.125 | 40.248 |
| 方法2 | 0.01 | 0.01 | 0.01 | 0.04 | 0.521 |
| 方法3 | 0.01 | 0.01 | 0.01 | 0.04 | 0.491 |