public class SelectSort { public static void main (String args[]) { System.out.println("Select Sort"); int [] a = {6,4,8,3,1,5,7,2}; int [] b = a; //copy array by value int [] c = a; //it's no fun sorting a sorted array. int [] d = a; //now each function uses an unsorted array. selectSortUpRL(a); System.out.println(); selectSortDownRL(b); System.out.println(); selectSortUpLR(c); System.out.println(); selectSortDownLR(d); } //sort in descending order, left to right public static void selectSortDownLR(int [] a) { for (int i = 0; i < a.length; ++i) { //sort left to right System.out.print("sorted index 0 to " + i + ":"); printArray(a); int maxpos = i; for (int rem=i+1; rem < a.length; rem++) { //sort left to right if (a[rem] > a[maxpos]) //sort in descending order maxpos = rem; } int tmp = a[i]; a[i] = a[maxpos]; a[maxpos] = tmp; } } //sort in ascending order, left to right public static void selectSortUpLR(int [] a) { for (int i = 0; i < a.length; i++) { //sort left to right System.out.print("sorted up to index " + i + ":"); printArray(a); int minpos = i; for (int rem=i+1; rem < a.length; rem++) { //sort left to right if (a[rem] < a[minpos]) //sort in ascending order minpos = rem; } int tmp = a[i]; a[i] = a[minpos]; a[minpos] = tmp; } } //sort in descending order, right to left public static void selectSortDownRL(int [] a) { for (int i = a.length-1; i >= 0; --i) { //sort right to left System.out.print("sorted from index " + i + " to end:"); printArray(a); int maxpos = i; for (int rem=i-1; rem >= 0; rem--) { //sort right to left if (a[rem] > a[maxpos]) //sort in descending order maxpos = rem; } int tmp = a[i]; a[i] = a[maxpos]; a[maxpos] = tmp; } } //sort in ascending order, right to left public static void selectSortUpRL(int [] a) { for (int i = a.length-1; i >= 0; --i) { //sort left to right System.out.print("sorted index " + i + " to end:"); printArray(a); int minpos = i; for (int rem=i-1; rem >= 0; rem--) { //sort left to right if (a[rem] < a[minpos]) //sort in ascending order minpos = rem; } int tmp = a[i]; a[i] = a[minpos]; a[minpos] = tmp; } } public static void printArray (int [] a) { for (int i = 0; i < a.length; ++i) System.out.print(a[i] + " "); System.out.println(); } }