public class GenericSort<G extends Comparable> {
private G[] integerarray;
public GenericSort(G[] inputarray){
this.integerarray = inputarray;
//check empty array
if (integerarray ==null || integerarray.length==0){return;}
quickSort(0,integerarray.length-1);
}
public void quickSort(int low, int high){
int i = low;
int j = high;
//set Pivot
G pivot = integerarray[low + (high-low)/2];
while(i<=j){
//check left
while(integerarray[i]<pivot){i++;}
//check right
while(pivot<integerarray[j]){j--;}
//swap
if(i<=j){
G temp = integerarray[i];
integerarray[i] = integerarray[j];
integerarray[j] = temp;
i++;
j--;
}
}
//recursion
if(low<j){quickSort(low,j);}
if(i<high){quickSort(i,high);}
}
}
这行:
while(integerarray[i]<pivot) {
i++;
} &
while(integerarray[i]<pivot){i++;}
正在给出错误,因为未知类型之间不允许使用comarision。所以我从可比性扩展了G。仍然不起作用。怎么解决呢?
最佳答案
<
和>
仅适用于原语。如果您的类实现了Comparable
,请使用其compareTo
方法并将结果与0进行比较
compareTo