Est-il possible de faire this genre de chose à Scala?Quicksort paresseux dans Scala
Répondre
Oui! Scala prend en charge les "valses paresseuses" comme un moyen de reporter le calcul d'une valeur jusqu'à ce qu'il soit réellement utilisé. Une grande partie de la bibliothèque Scala 2.8 est capable de travailler avec des collections définies paresseusement.
cela ne répond pas à la question posée. –
def quicksort[A](xs: Stream[A])(implicit o: Ordering[A]): Stream[A] = {
import o._
if (xs.isEmpty) xs else {
val (smaller, bigger) = xs.tail.partition(_ < xs.head)
quicksort(smaller) #::: xs.head #:: quicksort(bigger)
}
}
Il peut être fait avec des vues aussi bien, mais il est lié à être beaucoup plus lent:
def quicksort[A](xs: List[A])(implicit o: Ordering[A]) = {
import o._
def qs(xs: SeqView[A, List[A]]): SeqView[A, Seq[_]] = if (xs.isEmpty) xs else {
val (smaller, bigger) = xs.tail.partition(_ < xs.head)
qs(smaller) ++ (xs.head +: qs(bigger))
}
qs(xs.view)
}
Merci, mais j'aimerais aussi voir l'implémentation des vues de liste. – Mahesh
@Mahesh L'implémentation de la vue s'avère plus difficile que je ne l'imaginais. Je vais continuer à essayer de voir si quelque chose fonctionne. –
@Mahesh Ok, j'ai réglé le problème. J'oubliais le '.head' sur la ligne de concaténation ... Silly me. –
- 1. Un générique quicksort Scala
- 2. Générer paresseux "spirale" dans Scala
- 3. Quicksort + profilage
- 4. Algorithme de partition QuickSort
- 5. Arbre de décision quicksort
- 6. Quicksort ne fonctionne pas
- 7. Quicksort pas de tri
- 8. quicksort nonrecursive avec pile
- 9. Apprendre LINQ: QuickSort
- 10. Un autre stackoverflow Quicksort
- 11. OutOfMemoryError dans une implémentation quicksort en Java
- 12. Comment trier un tableau dans Scala?
- 13. Le quicksort fonctionnel C# échoue
- 14. Quicksort en F # - syntaxe question
- 15. Programme d'algorithme Quicksort en Java
- 16. Quicksort à 3 voies, question
- 17. Regard sur Tris - Quicksort itératif?
- 18. Chargement paresseux dans NHibernate
- 19. Opérateur Java paresseux regex pas si paresseux?
- 20. hibernate paresseux init pas paresseux du tout!
- 21. Chargement paresseux implicite vs téléchargement paresseux explicite
- 22. Pourquoi ce Quicksort fonctionne-t-il?
- 23. Bug dans la mise en œuvre de quicksort
- 24. Comment convertir séquence paresseux pour non paresseux Clojure
- 25. Chargement IQueryable et paresseux
- 26. SWT TabFolder chargement paresseux
- 27. Problème d'évaluation paresseux
- 28. less.js chargement feuille paresseux
- 29. Xcode paresseux expression régulière
- 30. Android Chargement paresseux
à mon humble avis, une question doit être autonome. Liens pour plus de détails sont d'accord, mais citant deux lignes de code haskell ici ne serait pas trop de travail. –