黑马程序员技术交流社区

标题: 在选择结构部分提升程序效率的一点小心得 [打印本页]

作者: 726477179    时间: 2016-8-9 18:11
标题: 在选择结构部分提升程序效率的一点小心得
合理的选择结构可以大大提升代码的执行效率,话不多说,举个小例子:
需求:求符合以下条件的数,除以1余0,除以2余1,除以3余0,除以4余1,除以5余4,除以6余3,除以7余5,除以8余1,除以9余0,刚开始我写的程序是这样的
public static void main(String[] args) {
  int i;
  for (i = 0; i < 100000; i++) {
   if (i % 1 == 0) {
    if (i % 2 == 1) {
     if (i % 3 == 0) {
      if (i % 4 == 1) {
       if (i % 5 == 4) {
        if (i % 6 == 3){
         if (i % 7 == 5) {
          if (i % 8 == 1) {
           if (i % 9 == 0)
            System.out.println(i);
          }
         }
        }
       }
      }
     }
    }
   }
  }
}
不过程序中有不少重复的,然后改成了这样:
public static void main(String[] args) {
  int i;
  for (i = 0; i < 100000; i++) {
   if (i % 5 == 4) {
    if (i % 6 == 3) {
     if (i % 7 == 5) {
      if (i % 8 == 1) {
       if (i % 9 == 0)
        System.out.println(i);
      }
     }
    }
   }
  }
}
这样就简便多了,不过后来发现还可以再优化一下,所以就改成了这样:
public static void main(String[] args) {
  int i;
  for (i = 0; i < 100000; i++) {
   if (i % 9 == 0) {
    if (i % 8 == 1) {
     if (i % 7 == 5) {
      if (i % 6 == 3) {
       if (i % 5 == 4)
        System.out.println(i);
      }
     }
    }
   }
  }
}
}

在c语言中clock()获取时间的数据表明,优化前后运行时间提高了10%-20%左右~(刚接触java,见谅见谅{:2_32:})
优化前:

优化后:







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2