讀古今文學網 > C語言解惑 > 25.2 應對算法進行優化 >

25.2 應對算法進行優化

算法既然不止一種,就有必要對算法進行優化。

【例25.2】優化打印9*9乘法表的例子。


#include <stdio.h>
int main
()
{
     int i=0
, j=0
;
     for
(i=1
; i<10
; ++i
)
     {
           for
(j=1
; j<10
; ++j
)
           {
                  if
(j<i
)
                   printf
("%d*%d=%d\t"
, j
, i 
,i*j
);
           }
           printf
("\n"
);
     }
     printf
("\n"
);
     return 0
;
}
  

輸出乘法表如下。


1*2=2
1*3=3    2*3=6
1*4=4    2*4=8    3*4=12
1*5=5    2*5=10   3*5=15    4*5=20
1*6=6    2*6=12   3*6=18    4*6=24    5*6=30
1*7=7    2*7=14   3*7=21    4*7=28    5*7=35    6*7=42
1*8=8    2*8=16   3*8=24    4*8=32    5*8=40    6*8=48    7*8=56
1*9=9    2*9=18   3*9=27    4*9=36    5*9=45    6*9=54    7*9=63    8*9=72
  

第2個for循環語句可以優化,它既要判別j<=10,又要判別j<=i,增加了循環次數。可以取消if語句,修改for循環語句的條件為「j<=i」即第2個循環語句簡化為:


for
(j=1
; j<=i
; ++j
)
      printf
("%d*%d=%d\t"
, j
, i 
,i*j
);
  

即可。一個程序寫完後,要對程序進行研究,看看有無可以優化的地方,盡量在現有的基礎上予以優化。