只有计算机才能完成的初等数学作业 - 情景 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左右。这个单线程循环计算平平无奇,没有什么值得深究的地方。由于大量的计算机资源都在闲置,我猜测,这肯定不是最优的解法。