import java.io.*; import java.util.*; public class Sorts { private int[] nums; private ArrayList<Integer>[] buckets; public int[] getNums() { return nums; } public String toString() { return "Nums: " + Arrays.toString(nums); } public Sorts(int n) { nums = new int[n]; buckets = new ArrayList[nums.length]; for (int i = 0; i < nums.length; i++) { buckets[i] = new ArrayList<Integer>(); } Random r = new Random(); for (int i = 0; i < nums.length; i++) { nums[i] = r.nextInt(999999)+1; } } public String printBuckets() { return "Buckets: " + Arrays.toString(buckets); } public void sortIntoBuckets(int n) { int value; for (int i = 0;i<nums.length;i++) { value = (int)((nums[i]/(Math.pow(10,n))) % 10); buckets[value].add(nums[i]); } } public void copyIntoArray() { int[] temp = new int[nums.length]; int i=0; while (i < temp.length) { for (int j = 0; j < buckets.length; j++) { if( buckets[j].size() != 0) { for (int k=0; k < buckets[j].size();k++) { temp[i] = buckets[j].get(k); i++; } } } } nums = temp; } public void rSort(int[] nums) { for (int n = 0; n < 4; n++) { sortIntoBuckets(n); copyIntoArray(); ArrayList<Integer>[] temp = new ArrayList[nums.length]; for (int i = 0; i < temp.length; i++) { temp[i] = new ArrayList<Integer>(); } buckets = temp; } } public void bSort(int[] a) { int k = 1; int swaps = 0; boolean swapped = false; int comparisons = 0; while (k <= a.length) { swapped = false; for (int i = 0; i < a.length - k; i++) { comparisons++; if (a[i] > a[i+1]) { swaps++; swapped = true; int n = a[i+1]; a[i+1] = a[i]; a[i] = n; } } if (!swapped) { break; } k++; } System.out.println("Swaps: " + swaps); System.out.println("Comparisons: " + comparisons); } /* public void iSort() { int num; for (int i = 0; i < nums.length; i++) { minIndex = findMin(i,nums); for (int j = i;j < nums.length; j++) { } } } */ public void sSort(int[] nums) { int first; int tmp; int comparisons = 0; for (int i = nums.length - 1; i >= 0; i--) { first = 0; for (int j = 0; j <= i; j++) { comparisons++; if (nums[i]>nums[first]) { first = j; } } tmp = nums[first]; nums[first] = nums[i]; nums[i] = tmp; } System.out.println("Comparisons: " + comparisons); } public int findMin(int start, int[] a) { int minIndex = 0; for (int i = start; i < a.length; i++) { if (a[i] < a[minIndex]) { minIndex = i; } } return minIndex; } }