【发布时间】:2015-04-13 02:43:37
【问题描述】:
我有一个我自己实现的快速排序方法。我给该方法一个对象数组。我如何使用比较器告诉方法对象将按哪个属性排序? 我搜索了一下,发现了如何实现比较器,但没有发现如何在搜索方法中使用它,因为我发现的每个示例都只使用了 arrays.sort()。
我需要不同的 getter 方法来获取不同的属性,我看不出比较器对此有何帮助?
我只需要一点帮助来启动整个事情,或者也许有人可以设法在网上找到一个很好的例子?
public WifiData[] qsortSSID(WifiData[] array, int left, int right){
int ll=left;
int rr=right;
if (rr>ll){
String pivot=array[(ll+rr)/2].getSSID();
//System.out.println(pivot);
while (ll <=rr){
//finde erstes element >= pivot
while(ll<right && array[ll].getSSID().compareTo(pivot) < 0){
ll +=1;
}
//finde letztes elemtn kleiner gleich pivot
while(rr>left && array[rr].getSSID().compareTo(pivot) > 0){
rr -=1;
}
if (ll <=rr){
swap(array, ll ,rr);
ll +=1;
rr -=1;
}
}
if (left < rr){
qsortSSID(array,left,rr);
}
if (ll<right){
qsortSSID(array,ll,right);
}
}
return array;
}
【问题讨论】:
-
阅读the documentation。调用
compareTo,它会返回一个int,它会告诉你哪个对象“更大”。 -
你能发布你的代码吗?
-
(a) 你为什么要实现你的自己的方法?当前的排序方法非常优化,(b) 请展示你的实现...
-
我自己做了因为任务说的。这是给学校的,我认为让你为我做这只是作弊。
-
好的,现在我编辑了它。我应该按 ssid 排序一次,然后按 mac 排序一次,我应该给我的排序方法一个比较器来告诉它按哪个排序
标签: java quicksort comparator