< T extends Comparable< T>> means declaring a generic type, which Inherited Comparable (can be compared through .compareTo(x), if it is larger than Subclass
If it is < T extends Comparable< ? super T> it means it can be the parent class of T
import java.util.Arrays; import java.util.Collection;public class QuickSort { public static <T extends Comparable<T>> void myQuickSort(T[] t, int a,int b) { if (a < b) { int q = Partition(t, a, b); myQuickSort(t, a, q - 1); myQuickSort(t, q + 1, b); } } public static <T extends Comparable<T>> int Partition(T[] t, int a, int b) { int l = a; int r = b + 1; T x = t[l]; while (true) { //找到比他大的或者相等的 (他比x小就继续直到找到比他大或者相等的) while (t[++l].compareTo(x) < 0 && l < b); //找到比他小的或者相等的 (他比x大就继续直到找到比他小或者相等的) while (t[--r].compareTo(x) > 0); if (l >= r) { break; } //如果下标正常 就交换 swap(t, l, r); } //把轴放进合适的位置,此时左边所有都比它小 t[a] = t[r]; t[r] = x; return r; } //java实现swap public static <T extends Comparable<T>> void swap(T[] data, int a, int b) { T t = data[a]; data[a] = data[b]; data[b] = t; } public static void main(String[] args) { Integer a[] = {0, 2, 2, 54, 1}; myQuickSort(a, 0, 4); System.out.println(Arrays.toString(a)); } }
The above is the detailed content of Java algorithm to implement quick sorting through generics. For more information, please follow other related articles on the PHP Chinese website!