char
K E R A H Z U C p | | smallest | A E R K H Z U C p | | | | next_smallest | | A C R K H Z U E p | A C E K H Z U R p | . . . A C E H K R U Z
public static void selectionSort(Comparable[] a) { // "p": "pass" for ( int p = 0; p < a.length - 1 ; p++ ) { int next_smallest_i = p; for ( j = p + 1; j < a.length; j++ ) if ( !(a[next_smallest_i] < a[j]) ) next_smallest_i = j; Comparable tmp = a[p]; a[p] = a[next_smallest_i]; a[next_smallest_i] = tmp; } }
K E R A H Z U C | | next 'unsorted' element (a[p]) / \ E K R A H Z U C | | next (a[p]) | E K R A H Z U C / \ \ \p A E K R H Z U C p showing sub-steps at this point: tmp = a[p] == "H" A E K R * Z U C j=p A E K * R Z U C j A E * K R Z U C j A E H K R Z U C p . . . A C E H K R U Z
public static void insertionSort(Comparable[] a) { int j; for ( int p = 1; p < a.length; p++ ) { Comparable tmp = a[p]; for ( j = p; j >= 1 && tmp.compareTo(a[j-1]) < 0; j-- ) a[j] = a[j - 1]; a[j] = tmp; } }