class Sorter {
	public static void main(String [] args) {
		int [] intArr = {6, 8, 2, 4, 1};
		System.out.println("Before: " + toString(intArr)); 
		sort(intArr);
		System.out.println("Before: " + toString(intArr)); 

		System.out.println();

		double [] doubleArr = {6.1, 8.2, 2.3, 4.4, 1.5};
		System.out.println("Before: " + toString(doubleArr)); 
		sort(doubleArr);
		System.out.println("Before: " + toString(doubleArr)); 

		System.out.println();

		String [] stringArr = {"dog", "cat", "cow", "zebra", "ant"};
		System.out.println("Before: " + toString(stringArr)); 
		sort(stringArr);
		System.out.println("Before: " + toString(stringArr)); 

		System.out.println();

		Value [] counterArr = {new Value(6), new Value(8), new Value(2), new Value(4), new Value(1)};
		System.out.println("Before: " + toString(counterArr)); 
		sort(counterArr);
		System.out.println("Before: " + toString(counterArr)); 

		System.out.println();

		Animal [] animalArr = {new Animal("dog"), new Animal("cat"), new Animal("cow"), new Animal("zebra"), new Animal("ant")};
		System.out.println("Before: " + toString(animalArr)); 
		sort(animalArr);
		System.out.println("Before: " + toString(animalArr)); 

	}

	static void sort(int [] arr) {
		for (int last = arr.length-1; last > 0; last--)
			for (int i = 0; i < last; i++)
				if (arr[i] > arr[i+1]) swap (arr, i, i+1);
	}

	static void swap(int [] arr, int i, int j) {
		int t = arr[i];
		arr[i] = arr[j];
		arr[j] = t;
	}

	static void sort(double [] arr) {
		for (int last = arr.length-1; last > 0; last--)
			for (int i = 0; i < last; i++)
				if (arr[i] > arr[i+1]) swap (arr, i, i+1);
	}

	static void swap(double [] arr, int i, int j) {
		double t = arr[i];
		arr[i] = arr[j];
		arr[j] = t;
	}

	static void sort(String [] arr) {
		for (int last = arr.length-1; last > 0; last--)
			for (int i = 0; i < last; i++)
				if (arr[i].compareTo(arr[i+1]) > 0)  swap (arr, i, i+1);
	}

	static void swap(String [] arr, int i, int j) {
		String t = arr[i];
		arr[i] = arr[j];
		arr[j] = t;
	}

	static void sort(Value [] arr) {
		for (int last = arr.length-1; last > 0; last--)
			for (int i = 0; i < last; i++)
				if (arr[i].compareTo(arr[i+1]) > 0)  swap (arr, i, i+1);
	}

	static void swap(Value [] arr, int i, int j) {
		Value t = arr[i];
		arr[i] = arr[j];
		arr[j] = t;
	}

	static void sort(Animal [] arr) {
		for (int last = arr.length-1; last > 0; last--)
			for (int i = 0; i < last; i++)
				if (arr[i].compareTo(arr[i+1]) > 0)  swap (arr, i, i+1);
	}

	static void swap(Animal [] arr, int i, int j) {
		Animal t = arr[i];
		arr[i] = arr[j];
		arr[j] = t;
	}

	static String toString(int [] arr) {
		String result ="{";
		boolean isFirst = true;
		for (int e : arr) {
			if (isFirst) 
				isFirst = false;
			else
				result += ", ";
			result += e;
		}
		result +="}";
		return result;
	}

	static String toString(double [] arr) {
		String result ="{";
		boolean isFirst = true;
		for (double e : arr) {
			if (isFirst) 
				isFirst = false;
			else
				result += ", ";
			result += e;
		}
		result +="}";
		return result;
	}

	static String toString(String [] arr) {
		String result ="{";
		boolean isFirst = true;
		for (String e : arr) {
			if (isFirst) 
				isFirst = false;
			else
				result += ", ";
			result += e;
		}
		result +="}";
		return result;
	}

	static String toString(Value [] arr) {
		String result ="{";
		boolean isFirst = true;
		for (Value e : arr) {
			if (isFirst) 
				isFirst = false;
			else
				result += ", ";
			result += e;
		}
		result +="}";
		return result;
	}

	static String toString(Animal [] arr) {
		String result ="{";
		boolean isFirst = true;
		for (Animal e : arr) {
			if (isFirst) 
				isFirst = false;
			else
				result += ", ";
			result += e;
		}
		result +="}";
		return result;
	}
}
