< 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中文網其他相關文章!