// sort: both select sort and insert sort // demonstrate more about arrays and encapsulation public class sorting0 { public static void main(String args[]) { int[] nums = {3,9,6,1,2}; Arrays AN = new Arrays(nums); AN.sort(); AN.print(); } // method main } // class array_store class Arrays { private int size; private int[] selected; private int[] inserted; private int[] unsorted; public Arrays(int[] array) { unsorted = array; // store array inside object size = array.length; selected = new int[size]; // create new array to store sorted values inserted = new int[size]; // create new array to store sorted values copy_array(); // sorted = unsorted; // think this should work, instead? try.... } // constructor Arrays // Want to save old array, but need same values to sort. // Can't use original and can't use alias "sorted = unsorted" // because both ideas would mess up original array. private void copy_array() { for (int i=0;i<=size-1;i++) { selected[i]=unsorted[i]; inserted[i]=unsorted[i]; } } // method copy_array public void sort() { select_sort(); insert_sort(); } // method sort private void select_sort() { int min, temp, index, scan; // outer loop checks each position for(index = 0; index < size-1; index++) { min = index; // inner loop finds smallest value for(scan = index+1; scan < size; scan++) if (selected[scan] < selected[min]) min = scan; // swap values temp = selected[min]; selected[min] = selected[index]; selected[index] = temp; } } // method select_sort private void insert_sort() { int index, position, key; // outer loop checks each position for(index = 1; index < size; index++) { key = inserted[index]; position = index; while(position > 0 && inserted[position-1]>key) { inserted[position] = inserted[position-1]; position--; } inserted[position] = key; } } // method insert_sort // service method for printing arrays public void print() { print(0); // print original print(1); // print select sorted print(2); // print insert sorted } // method print // support method for printing arrays private void print(int test) { int[] array = new int[size]; // choose which array to print if (test == 0) { array = unsorted; System.out.print("Original array:\t\t"); } else if(test == 1) { array = selected; System.out.print("Select sorted array:\t"); } else if(test == 2) { array = inserted; System.out.print("Insert sorted array:\t"); } else { System.err.println("Unknown array type!"); System.exit(0); } // print array for(int i=0 ; i<=array.length-1;i++) System.out.print(array[i]+" "); System.out.println(); } // method print } // class Arrays