我需要按第二個元素對數組進行排序。我如何將比較器傳遞給quickSort函數? 我現在使用下面的醜陋做法:如何使用任意類型的scala.util.Sorting.quickSort()?
type AccResult = (AccUnit, Long) // pair
class Comparator(a:AccResult) extends Ordered[AccResult] {
def compare(that:AccResult) = lessCompare(a, that)
def lessCompare(a:AccResult, that:AccResult) = if (a._2 == that._2) 0 else if (a._2 < that._2) -1 else 1
}
scala.util.Sorting.quickSort(data)(d => new Comparator(d))
爲什麼QUICKSORT設計有一個有序的視圖,而不是通常的比較論證?
斯卡拉2.7解決方案是首選。
隱式對象被破壞b/c參數是x和y,代碼處理a和那個。 – 2010-11-06 13:13:03
@Hoodiecrow Argh ... – 2010-11-06 13:16:07
因此,我仍然需要實現一個自定義類並使用2.7中的視圖。 2.8好多了。我不能等待它被debian測試所採用。 – Basilevs 2010-11-06 19:39:26