簡単な工夫
ちょっとした工夫でプログラムは簡素に、そして素早く処理を行える物になると思います。
その簡単な例を今回は少し挙げてみたいと思います。
配列aにrandomに要素を格納したと考えます。
まず配列内を操作する点について。
要素の入れ替えなどで良く使いますよね。
int a[100], en, i; en = sizeof( a ) / sizeof( a[0] ); for( int = 0; i < en; i++ ){ … }
配列a全てに要素があるとは限りませんから、
sizeofで配列aの要素の数を調べます。
要素の数を"element number"と考えて頭文字をとったenに要素の個数を代入します。
ここでsizeof( a[0] )は1です。
また配列の先頭と最後尾を逆に入れ替えるとき、
for( int = 0; i < en / 2; i++ ){ int t = a[0]; a[0] = a[n-1-i]; a[n-1-i] = t;
en / 2
により、配列の中心を求めています。
例えば、
1 2 3 4 5
と並んでいたとするとき、en/2=2.5です。
int型なので小数点以下は切り捨て2となり、要素'3'は動かす必要がないので、2回繰り返せばこの配列の先頭と最後尾を入れ替えることができます。
このように、総当たりをなくすというような工夫はプログラムを高速化していく上では非重要になってきます。
まだ、私たちがつくるようなプログラムでは総当りも工夫したものも違いは0に等しいと思いますが…
この先重要になってくるのではないでしょうか。
素数プログラムでは総当り回避に√を使ったりもしましたね。
またすこしずつ書いていくのでよろしくお願いします。