Un algoritmo que me gusta mucho es el quicksort, porque es un algoritmo por demás claro. Ya he escrito lo fácil que es implementarlo en Erlang, Rust, haskell y lisp
Ahora le toca a Q#, el lenguaje de programación lógica/relacional. Básicamente, el algoritmo toma un pivote y agrupa los menores que el pivote al principio y los mayores al final y aplica quicksort a estos dos grupos. Y si la lista es vacía o tiene un elemento, ya está ordenada.
Vamos al código:
namespace QuantumQuickSort {
function QuickSort(xs : Int[]) : Int[] {
if Length(xs) <= 1 {
return xs;
}
let pivot = xs[0];
let smaller = Filter(x -> x <= pivot, xs[1...]);
let greater = Filter(x -> x > pivot, xs[1...]);
return QuickSort(smaller)
+ [pivot]
+ QuickSort(greater);
}
function Filter(predicate : (Int -> Bool), xs : Int[]) : Int[] {
mutable result = [];
for x in xs {
if predicate(x) {
set result += [x];
}
}
return result;
}
}
.jpeg)
No hay comentarios.:
Publicar un comentario