< T extends Comparable< T>>的意思是声明了一个泛型,该泛型继承了Comparable(可以通过.compareTo(x)比较,比x大就返回大于0,等于返回0,小于返回小于0)
如果是 < T extends Comparable< ? extends T>代表可以是T的子类
如果是 < T extends Comparable< ? super T> 代表可以是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)); } }
以上是java算法之通过泛型实现快排的详细内容。更多信息请关注PHP中文网其他相关文章!