2014-11-25 19 views

cevap

12

Sen Ordering Kendi tanımlamak gerekecek:

scala> val minHeap = scala.collection.mutable.PriorityQueue.empty(MinOrder) 
minHeap: scala.collection.mutable.PriorityQueue[Int] = PriorityQueue() 

scala> minHeap.ord 
res1: Ordering[Int] = [email protected] 
+6

Sanırım kendi Siparişinizi oluşturmanıza bile gerek yoktur, zaten mevcut olanın tersi yöntemini kullanabilirsiniz: Sipariş [Int]. – nachinius

+3

tamamlanması için val minHeap = scala.collection.mutable.PriorityQueue.empty ([Int] .reverse siparişi verilmesi) https://codebunk.com/pb/788100787 – nachinius

0

Güncelleme Ağustos 2016: Eğer Chris Okasaki (chrisokasaki) öneriyi chrisokasaki/scads/scala/heapTraits.scala düşünebilirsiniz

scala> object MinOrder extends Ordering[Int] { 
     def compare(x:Int, y:Int) = y compare x 
     } 
defined object MinOrder 

Ardından yığın oluştururken bu verileri kullanın. Bir birleştirme işlemi ile türgüvenli yığınları için kavramının

Belgesi:

bu öneri bir Heap ait "-so-kolay değil" bölümünü göstermektedir.
Burada "typesafe", arabirimin hiçbir zaman farklı yığınların aynı yığın içinde karıştırılmasına izin vermeyeceği anlamına gelir.

  • olan bir yığın bir öğe ekleyerek, bu ekleme, mevcut yığın oluşturmak için kullanılandan farklı bir sıralama içermektedir olamaz Özellikle , ve
  • mevcut iki yığın birleştirme, yığınları Aynı sipariş ile oluşturulmuş olması garantilidir.

its design bakınız.

val h1 = LeftistHeap.Min.empty[Int] // an empty min-heap of integers 
İlgili konular