package sorts;
/**
* Sort.java
* Created by Stijn Strickx on May 21, 2008
* Copyright 2008 Stijn Strickx, All rights reserved
*/
/**
* These algorithms can be used to sort an array of
* any primitive datatype / Comparable Object.
* The datatype conversions for the arrays won't influence
* the time complexity of the sorting algorithms.
* Without these conversions,
* the algorithms would have to be re-written for every primitive datatype.
*/
public class Sort {
public static <T extends Comparable<? super T>> void bubbleSort(T[] a){
(new BubbleSort()).sort(a);
}
public static int[] bubbleSort(int[] a){
Integer[] b = OArrays.toObjectArray(a);
bubbleSort(b);
return OArrays.toPrimitiveArray(b);
}
public static long[] bubbleSort(long[] a){
Long[] b = OArrays.toObjectArray(a);
bubbleSort(b);
return OArrays.toPrimitiveArray(b);
}
public static double[] bubbleSort(double[] a){
Double[] b = OArrays.toObjectArray(a);
bubbleSort(b);
return OArrays.toPrimitiveArray(b);
}
public static float[] bubbleSort(float[] a){
Float[] b = OArrays.toObjectArray(a);
bubbleSort(b);
return OArrays.toPrimitiveArray(b);
}
public static char[] bubbleSort(char[] a){
Character[] b = OArrays.toObjectArray(a);
bubbleSort(b);
return OArrays.toPrimitiveArray(b);
}
public static boolean[] bubbleSort(boolean[] a){
Boolean[] b = OArrays.toObjectArray(a);
bubbleSort(b);
return OArrays.toPrimitiveArray(b);
}
public static byte[] bubbleSort(byte[] a){
Byte[] b = OArrays.toObjectArray(a);
bubbleSort(b);
return OArrays.toPrimitiveArray(b);
}
public static <T extends Comparable<? super T>> void selectionSort(T[] a){
(new SelectionSort()).sort(a);
}
public static int[] selectionSort(int[] a){
Integer[] b = OArrays.toObjectArray(a);
selectionSort(b);
return OArrays.toPrimitiveArray(b);
}
public static long[] selectionSort(long[] a){
Long[] b = OArrays.toObjectArray(a);
selectionSort(b);
return OArrays.toPrimitiveArray(b);
}
public static double[] selectionSort(double[] a){
Double[] b = OArrays.toObjectArray(a);
selectionSort(b);
return OArrays.toPrimitiveArray(b);
}
public static float[] selectionSort(float[] a){
Float[] b = OArrays.toObjectArray(a);
selectionSort(b);
return OArrays.toPrimitiveArray(b);
}
public static char[] selectionSort(char[] a){
Character[] b = OArrays.toObjectArray(a);
selectionSort(b);
return OArrays.toPrimitiveArray(b);
}
public static boolean[] selectionSort(boolean[] a){
Boolean[] b = OArrays.toObjectArray(a);
selectionSort(b);
return OArrays.toPrimitiveArray(b);
}
public static byte[] selectionSort(byte[] a){
Byte[] b = OArrays.toObjectArray(a);
selectionSort(b);
return OArrays.toPrimitiveArray(b);
}
public static <T extends Comparable<? super T>> void insertionSort(T[] a){
(new InsertionSort()).sort(a);
}
public static int[] insertionSort(int[] a){
Integer[] b = OArrays.toObjectArray(a);
insertionSort(b);
return OArrays.toPrimitiveArray(b);
}
public static long[] insertionSort(long[] a){
Long[] b = OArrays.toObjectArray(a);
insertionSort(b);
return OArrays.toPrimitiveArray(b);
}
public static double[] insertionSort(double[] a){
Double[] b = OArrays.toObjectArray(a);
insertionSort(b);
return OArrays.toPrimitiveArray(b);
}
public static float[] insertionSort(float[] a){
Float[] b = OArrays.toObjectArray(a);
insertionSort(b);
return OArrays.toPrimitiveArray(b);
}
public static char[] insertionSort(char[] a){
Character[] b = OArrays.toObjectArray(a);
insertionSort(b);
return OArrays.toPrimitiveArray(b);
}
public static boolean[] insertionSort(boolean[] a){
Boolean[] b = OArrays.toObjectArray(a);
insertionSort(b);
return OArrays.toPrimitiveArray(b);
}
public static byte[] insertionSort(byte[] a){
Byte[] b = OArrays.toObjectArray(a);
insertionSort(b);
return OArrays.toPrimitiveArray(b);
}
public static <T extends Comparable<? super T>> void shellSort(T[] a){
(new ShellSort()).sort(a);
}
public static int[] shellSort(int[] a){
Integer[] b = OArrays.toObjectArray(a);
shellSort(b);
return OArrays.toPrimitiveArray(b);
}
public static long[] shellSort(long[] a){
Long[] b = OArrays.toObjectArray(a);
shellSort(b);
return OArrays.toPrimitiveArray(b);
}
public static double[] shellSort(double[] a){
Double[] b = OArrays.toObjectArray(a);
shellSort(b);
return OArrays.toPrimitiveArray(b);
}
public static float[] shellSort(float[] a){
Float[] b = OArrays.toObjectArray(a);
shellSort(b);
return OArrays.toPrimitiveArray(b);
}
public static char[] shellSort(char[] a){
Character[] b = OArrays.toObjectArray(a);
shellSort(b);
return OArrays.toPrimitiveArray(b);
}
public static boolean[] shellSort(boolean[] a){
Boolean[] b = OArrays.toObjectArray(a);
shellSort(b);
return OArrays.toPrimitiveArray(b);
}
public static byte[] shellSort(byte[] a){
Byte[] b = OArrays.toObjectArray(a);
shellSort(b);
return OArrays.toPrimitiveArray(b);
}
public static <T extends Comparable<? super T>> void mergeSort(T[] a){
(new MergeSort()).sort(a);
}
public static int[] mergeSort(int[] a){
Integer[] b = OArrays.toObjectArray(a);
mergeSort(b);
return OArrays.toPrimitiveArray(b);
}
public static long[] mergeSort(long[] a){
Long[] b = OArrays.toObjectArray(a);
mergeSort(b);
return OArrays.toPrimitiveArray(b);
}
public static double[] mergeSort(double[] a){
Double[] b = OArrays.toObjectArray(a);
mergeSort(b);
return OArrays.toPrimitiveArray(b);
}
public static float[] mergeSort(float[] a){
Float[] b = OArrays.toObjectArray(a);
mergeSort(b);
return OArrays.toPrimitiveArray(b);
}
public static char[] mergeSort(char[] a){
Character[] b = OArrays.toObjectArray(a);
mergeSort(b);
return OArrays.toPrimitiveArray(b);
}
public static boolean[] mergeSort(boolean[] a){
Boolean[] b = OArrays.toObjectArray(a);
mergeSort(b);
return OArrays.toPrimitiveArray(b);
}
public static byte[] mergeSort(byte[] a){
Byte[] b = OArrays.toObjectArray(a);
mergeSort(b);
return OArrays.toPrimitiveArray(b);
}
public static <T extends Comparable<? super T>> void quickSort(T[] a){
(new QuickSort()).sort(a);
}
public static int[] quickSort(int[] a){
Integer[] b = OArrays.toObjectArray(a);
quickSort(b);
return OArrays.toPrimitiveArray(b);
}
public static long[] quickSort(long[] a){
Long[] b = OArrays.toObjectArray(a);
quickSort(b);
return OArrays.toPrimitiveArray(b);
}
public static double[] quickSort(double[] a){
Double[] b = OArrays.toObjectArray(a);
quickSort(b);
return OArrays.toPrimitiveArray(b);
}
public static float[] quickSort(float[] a){
Float[] b = OArrays.toObjectArray(a);
quickSort(b);
return OArrays.toPrimitiveArray(b);
}
public static char[] quickSort(char[] a){
Character[] b = OArrays.toObjectArray(a);
quickSort(b);
return OArrays.toPrimitiveArray(b);
}
public static boolean[] quickSort(boolean[] a){
Boolean[] b = OArrays.toObjectArray(a);
quickSort(b);
return OArrays.toPrimitiveArray(b);
}
public static byte[] quickSort(byte[] a){
Byte[] b = OArrays.toObjectArray(a);
quickSort(b);
return OArrays.toPrimitiveArray(b);
}
}