(秒表)设计一个名为 StopWatch 的类,该类包含:
具有访问器的私有数据域 startTime 和 endTime。一个无参构造方法,使用当前时间来初始化 startTime。一个名为 start() 的方法,将 startTime 重设为当前时间。一个名为 stop() 的方法,将 endTime 设置为当前时间。一个名为 getElapsedTime() 的方法,以毫秒为单位返回秒表记录的流逝时间。 画出该类的 UML 图并实现这个类。编写一个测试程序,用于测量使用选择排序对 100 000 个数字进行排序的执行时间。import java.util.Date;import java.util.Random;public class PRactice_9_6 { public static void main(String[] args) { final int NUM = 100000; int[] number = new int[NUM]; Random random = new Random(); for (int i = 0; i < NUM; i++) number[i] = random.nextInt(100000); StopWatch stopWatch = new StopWatch(); sort(number, 0, NUM - 1); stopWatch.stop(); System.out.println(stopWatch.getElapsedTime() + "ms"); } //将数组第一个数作为中间数,放到数组中正确的位置,并返回其位置 public static int mid(int[] a,int low,int high) { int middle = a[low]; while (low < high) { for (; low < high; high--) { if (middle > a[high]) { a[low] = a[high]; low++; break; } } for (; low < high; low++) { if (a[low] > middle) { a[high] = a[low]; high--; break; } } } a[low] = middle; return low; } //将数组分成两份。递归。 public static void sort(int[] a, int low, int high) { if (low >= high) return; int middle; middle = mid(a, low, high); sort(a, low, middle - 1); sort(a, middle + 1, high); }}class StopWatch { private Date startTime; private Date endTime; public StopWatch() { startTime = new Date(); } public void start() { startTime = new Date(); } public void stop() { endTime = new Date(); } public long getElapsedTime() { return endTime.getTime() - startTime.getTime(); } public Date getStartTime() { return startTime; } public Date getEndTime() { return endTime; }}输出结果为:
21ms
(输出结果不一定是一样的,根据数组的杂乱程度和电脑性能而定) (程序若有问题或者建议希望在评论处提,因为我是个初学者,想有所提高)
新闻热点
疑难解答