¿Es posible hacer this tipo de cosa en Scala?Lazy Quicksort en Scala
Respuesta
Sí!
Scala admite "lazy vals" como una forma de diferir el cálculo de un valor hasta que realmente se use. Gran parte de la biblioteca de Scala 2.8 es capaz de trabajar con colecciones definidas de forma diferida.
esto no responde la pregunta. –
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)
}
}
Se puede hacer con vistas a su vez, a pesar de que está destinado a ser mucho más lento:
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)
}
Gracias, pero me gustaría ver también la implementación de las listas de listas. – Mahesh
@Mahesh La implementación de la vista resulta ser más difícil de lo que había imaginado. Seguiré intentando ver si algo funciona. –
@Mahesh Ok, tengo el problema resuelto. Estaba olvidando el '.head' en la línea de concatenación ... Tonto. –
- 1. Lazy vals y los parámetros implícitos en Scala
- 2. Quicksort pivote
- 3. F # Lazy Evaluation vs Non-Lazy
- 4. Quicksort multiproceso o mergesort
- 5. ¿std :: sort implementa Quicksort?
- 6. Aprendiendo LINQ: QuickSort
- 7. Algoritmo de partición QuickSort
- 8. implementación de quicksort
- 9. Lazy Loading en Flexslider
- 10. Lazy evaluación en Bash
- 11. Problema con quicksort paralelo en erlang
- 12. Programa de algoritmo Quicksort en Java
- 13. Quicksort más lento que Mergesort?
- 14. Ordenando por el placer - Quicksort
- 15. C# quicksort funcional está fallando
- 16. ¿Qué es un Quicksort determinístico?
- 17. Comparación entre timsort y quicksort
- 18. Construcción de quicksort con php
- 19. Android listview lazy loading
- 20. less.js carga lazy sheet
- 21. Spring @Autowired @ Lazy
- 22. Lazy Dependency Injection
- 23. PHP Lazy Evaluación booleana
- 24. Lazy Atributo coerción
- 25. PHP Lazy Load Iterator
- 26. Bootstrap Carousel Lazy Load
- 27. Ocaml: Lazy Lists
- 28. Lazy Loading with Ninject
- 29. ¿Qué es Lazy Loading?
- 30. jQuery Cycle Lazy Loading
en mi humilde opinión, una pregunta debe ser autónomo. Los enlaces para obtener más detalles están bien, pero citar dos líneas de código haskell aquí no sería demasiado trabajo. –