【发布时间】:2011-06-13 21:37:32
【问题描述】:
我每周做一次计算机科学入门实验室。我希望在下一个实验室结束时能有一场快速的比赛。我想给他们这样的代码块:
public class EfficientCode{
public static void main(){
long startTime, endTime, executionTime;
startTime = System.currentTimeMillis();
yourEfficientMethod():
endTime = System.currentTimeMillis();
executionTime = endTime – startTime;
}
public static void doSomething(){
// you do this part.
}
}
他们将实现 doSomething 方法,代码最快的人将获得少量奖励分数。
问题是问题需要简单一些。学生掌握:循环、if/else、字符串、加法、数组等。
以下是我对问题可能的想法:
- 找出 1 到 1,000,000 之间的所有完美数。 (完美数是所有数的因数相加的数。即:6 = 3 + 2 + 1)
- 找出 1 到 1,000,000 之间的所有素数
我认为,为了使方法之间的性能存在可衡量的差异,您必须多次执行某项操作。
【问题讨论】:
-
这个问题可能更适合programmers.stackexchange.com吗?
-
我读对了吗?您正在教授这门课程,并且您在问“我认为,为了使方法之间的性能存在可衡量的差异,您必须多次执行某项操作。”?
-
您需要小心地指定严格的指导方针和参数,以确定什么是可接受的。我只是硬编码一个完美/质数列表,并让它打印出来。没有代码能打败它。可以说,我不应该获得奖励积分(如果我在课堂上,我的观点会有所不同,但无论哪种方式,这是你需要在有人尝试之前解决的问题。。)
-
抱歉,我认为这不是问初学者的好问题。在他们进入数据结构和算法之前,我不确定他们能做多少严肃的事情,这可能需要很多时间。当然,也许你可以让他们做一些像寻找素数这样的事情,但谁会这样做呢?我的建议 - 保持真实。
标签: performance perfect-numbers