public final class Selection2 { // sort data[0]..data[n-1] into ascending order public static void select (int [] data, int n) { select (data, 0, n); } // sort data[first]..data[first+n-1] into ascending order public static void select (int [] data, int first, int n) { for (int i=n-1; i>first; i--) { // find index of next biggest element int big = first; for (int j=first+1; j<=first+i; j++) { if (data[big] < data[j]) big=j; } swap (data, first+i, big); System.out.print (i+": "); printArray (data, first, n); } } private static void swap (int [] data, int i, int j) { final int temp = data[i]; data[i]=data[j]; data[j]=temp; } private static void printArray (int [] data, int n) { printArray (data, 0, n); } private static void printArray (int [] data, int first, int n) { System.out.print ("["); for (int i=first; i