// SortBubble: simpel bubble sort public class SortBubble { private double[] a; // holds numbers after sorting private int size; // size of array private int count; // counter for numbers as produced in order public SortBubble(int s) { size = s; count = 0; a = new double[size]; } public void generateNumbers() { for (int i = 0; i < size; i++) // generate numbers to sort a[i] = Math.random(); } public void bubbleSort() { for (int dummy = 0; dummy < size-1; dummy++) for (int i = 0; i < size-1; i++) if (a[i] > a[i+1]) { double temp = a[i]; a[i] = a[i+1]; a[i+1] = temp; } } public boolean checkSorted() { // check if in sorted order for (int i = 0; i < size-1; i++) if (a[i] >= a[i+1]) return false; return true; } }Here is the output of several runs, showing the times to sort different numbers of items into order:
// SortBubbleTest: test the SortBubble class, a low performance sort public class SortBubbleTest { final static int SIZE = 50000; public static void main(String[] argv) { SortBubble bubble = new SortBubble(SIZE); System.out.println("Number of items: " + SIZE); long startTime = System.currentTimeMillis(); bubble.generateNumbers(); elapsedTime(startTime, "After generating, "); bubble.bubbleSort(); elapsedTime(startTime, "After sorting, "); System.out.println("Sorted is " + bubble.checkSorted()); } public static void elapsedTime(long startTime, String s) { long stopTime = System.currentTimeMillis(); double elapsedTime = ((double)(stopTime - startTime))/1000.0; System.out.println(s + "elapsed time: " + elapsedTime + " seconds"); } }
Number of items: 1000 After generating, elapsed time: 0.016 seconds After sorting, elapsed time: 0.125 seconds Sorted is true (time to sort: 0.109)
Number of items: 10000 After generating, elapsed time: 0.033 seconds After sorting, elapsed time: 8.855 seconds Sorted is true (time to sort: 8.822)
Number of items: 20000 After generating, elapsed time: 0.098 seconds After sorting, elapsed time: 36.123 seconds Sorted is true (time to sort: 36.025)
Number of items: 50000 After generating, elapsed time: 0.148 seconds After sorting, elapsed time: 253.755 seconds Sorted is true (time to sort: 253.607)
Number of items: 100000 After generating, elapsed time: 0.15 seconds After sorting, elapsed time: 1118.822 seconds Sorted is true (time to sort: 1118.672)