import java.util.Arrays; public class BubbleSort2 { public static > void sort(T[] arr) { int n = arr.length; boolean swapped; System.out.println( Arrays.toString( arr ) ); for (int i = 0; i < n-1; i++) // Repeat n-1 times { swapped = false; // Compare every adjacent pair of element for ( int j = 0; j < n-1-i; j++ ) { if ( arr[j].compareTo(arr[j+1]) > 0 ) // If out of place { exch( arr, j, j+1); // Swap arr[j] and arr[j+1] swapped = true; } } System.out.println( Arrays.toString( arr ) ); if ( swapped == false ) // No swaps --> sorted !! break; // exit loop } } private static > void exch( T[] a, int i, int j ) { T help; help = a[i]; a[i] = a[j]; a[j] = help; } }