今天,我同学跑过来叫我帮写个算法:计算从1到10000之间,能被9整除并且尾数为6的个数字的个数。因为提问的人在考试中,所以我急急忙忙就写了个算法
class T
{
public static void main(String[] args)
{
int flag=0;
for(int i=0;i<=10000;i++)
{
if(i%9==0&&i%10==6)
flag++;
}
System.out.println(flag);
}
}
写完后吃饭时想了想,自己还真菜呀,怎么能写出这么垃圾的算法来呢,简直是丢程序员的脸哪,哪怕我当时只要稍微想一下就知道上面的算法太浪费时间了呀,居然从1算到10000,一个一个的算,到少在循环时也是i=i+10呀,自己再想一下,原来自己的算法还真的是垃圾得不变成了不可回收垃圾了呀,后来从新写了个算法:
class T
{
public static void main(String[] args)
{
int flag=0;
for(int i=36;i<=10000;i=i+90)
{
flag++;
}
System.out.println(flag);
}
}
这个算法就不知道要比原来的快多少辈了,我以前看过一文章,上面有个对程序员的终告:不要以为CPU的速度快,就把所有的事都交给它做。现在想想自己的行为,还真的如此了。我们的算法老师总是对我们说,算法是程序的灵魂,算法的好坏直接影响到程序的好坏,也决定着软件或系统的强弱,我们每一个程序员在编写一个算法时不应该满足于实现了算法求出结果,而应该追求最有效的算法!
我的第二个算法不知道是不是最有效的,如果有哪个大哥大姐的算法更有效,或是有一些其他的例子,希望回复一下,小弟在些感激不尽,谢谢了!