*9.6 (Stopwatch) Design a class named StopWatch . The class contains:
Private data fields startTime and endTime with getter methods.
A no-arg constructor that initializes startTime with the current time.
A method named start() that resets the startTime to the current time.
A method named stop() that sets the endTime to the current time.
A method named getElapsedTime() that returns the elapsed time for the
stopwatch in milliseconds.
Draw the UML diagram for the class and then implement the class. Write a test
program that measures the execution time of sorting 100,000 numbers using
selection sort.
Private data fields startTime and endTime with getter methods.
A no-arg constructor that initializes startTime with the current time.
A method named start() that resets the startTime to the current time.
A method named stop() that sets the endTime to the current time.
A method named getElapsedTime() that returns the elapsed time for the
stopwatch in milliseconds.
Draw the UML diagram for the class and then implement the class. Write a test
program that measures the execution time of sorting 100,000 numbers using
selection sort.
public class StopWatch { private long mStartTime; private long mEndTime; private long mElapsedPause; private int mLastSecond = 0; private boolean mIsOn; private boolean mIsPaused; private int mSeconds; private int mMinutes; private int mHours; public StopWatch() { mStartTime = System.currentTimeMillis(); } public long getStartTime() { return mStartTime; } public long getEndTime() { return mEndTime; } public void start() { mIsOn = true; mStartTime = System.currentTimeMillis(); } public void stop(){ mEndTime = System.currentTimeMillis(); mIsOn = false; } public long getElapsedTime() { return mEndTime - mStartTime; } public long peek() { return System.currentTimeMillis() - mStartTime; } public void pause() { mIsPaused = true; mElapsedPause = System.currentTimeMillis() - mStartTime; } public void resume() { mIsPaused = false; mStartTime = System.currentTimeMillis() - mElapsedPause; } public boolean isOn() { return mIsOn; } public boolean nextSecond() { updateTime(); if (mSeconds != mLastSecond) { mLastSecond = mSeconds; return true; } else { return false; } } public boolean nextFiveSeconds() { updateTime(); return mSeconds % 5 == 0; } public int getHour(){ updateTime(); return mHours; } public int getMinute(){ updateTime(); return mMinutes; } public int getSeconds(){ updateTime(); return mSeconds; } private void updateTime() { long currentTime = peek() / 1000; mSeconds = (int)(currentTime % 60); currentTime = currentTime / 60; mMinutes = (int) (currentTime % 60); currentTime = currentTime / 60; mHours = (int)(currentTime % 24); } @Override public String toString() { updateTime(); String hours = getTimeFormat(mHours); String minutes = getTimeFormat(mMinutes); String seconds = getTimeFormat(mSeconds); return hours + ":" + minutes + ":" + seconds; } private String getTimeFormat(int time) { return (time > 9) ? time + "" : "0" + time; } public void reset(){ stop(); mHours = 0; mMinutes = 0; mSeconds = 0; mStartTime = 0; mEndTime = 0; } public boolean isPaused() { return mIsPaused; } }
public class Exercise_06 { public static void main(String[] args) { int[] randomArray = new int[100000]; System.out.println("Creating an unsorted array of 100,000 numbers..."); for (int i = 0; i < randomArray.length; i++) { randomArray[i] = (int) (Math.random() * 100000); } StopWatch stopWatch = new StopWatch(); System.out.println("Sorting array using selection algorithm..."); stopWatch.start(); selectionSort(randomArray); stopWatch.stop(); System.out.println("Time elapsed: " + stopWatch.getElapsedTime() + " milliseconds."); for (int i = 0; i < randomArray.length; i++) { System.out.printf("%6d ", randomArray[i]); if ((i + 1) % 10 == 0) System.out.printf("\n"); } } // selection sort public static void selectionSort(int[] m) { for (int i = 0; i < m.length - 1; i++) { int currentMin = m[i]; int currentIndex = i; for (int j = i + 1; j < m.length; j++) { if (currentMin > m[j]) { currentMin = m[j]; currentIndex = j; } } if (currentIndex != i) { m[currentIndex] = m[i]; m[i] = currentMin; } } } }
No comments:
Post a Comment