欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

只有计算机才能完成的初等数学作业 - 情景 1:序列表

最编程 2024-04-20 19:41:46
...

今天刚上小学四年级的小季放学回家,妈妈正在做饭,爸爸正在沙发上刷公众号「字节流」。

小季说:“妈妈,今天老师布置了一项作业,要数一亿粒米。”

妈妈:“找你爸去。”

爸爸:“?”

于是爸爸一个人开始数米,开启一个循环,遍历整个数组进行计算。

以下是单线程执行的代码。

首先定义一个计算接口:

public interface Counter {
  long count(double[] riceArray);
}

爸爸循环数米:

public class FatherCounter implements Counter {
  @Override
  public long count(double[] riceArray) {
    long total = 0;
    for (double i : riceArray){
      if (i == 1)
        total += 1;
      if (total >= 1e8)
        break
    }
    return total;
  }
}

主函数:

 public static void main(String[] args) {
        long length = (long) 1.2e8;
        double[] riceArray = createArray(length);
        Counter counter = new FatherCounter();
        long startTime = System.currentTimeMillis();
        long value = counter.count(riceArray);
        long endTime = System.currentTimeMillis();
        System.out.println("消耗时间(毫秒):" + (endTime - startTime));
    }

最后的运算结果:

消耗时间(毫秒):190

我运行了多次,最后的消耗时间都在190ms左右。这个单线程循环计算平平无奇,没有什么值得深究的地方。由于大量的计算机资源都在闲置,我猜测,这肯定不是最优的解法。