02-12-2013, 01:48 PM
(Modification du message : 02-12-2013, 01:49 PM par Sephi-Chan.)
A défaut d'avoir des implémentations perso (est-ce très pertinent pour ces algos très classiques, d'autant qu'il y a des variantes selon le choix du pivot ?), voici une collection d'implémentations dans différents langages, dont Ruby et Javascript, que je colle ici par commodité :
function qsort(a) {
if (a.length == 0) return [];
var left = [], right = [], pivot = a[0];
for (var i = 1; i < a.length; i++) {
a[i] < pivot ? left.push(a[i]) : right.push(a[i]);
}
return qsort(left).concat(pivot, qsort(right));
}
def quicksort(list)
return list if list.length <= 1
pivot = list.shift
left, right = list.partition { |el| el < pivot }
quicksort(left) + [pivot] + quicksort(right)
end