Voici le quicksort le code que j'ai écrit. La fonction ne fonctionne pas car elle ne peut pas atteindre le cas de base. Si j'enregistre le pivot, r
y l
à la console, ils restent les mêmes, quel que soit le nombre de fois où la fonction de tri est appelée. Je me demande donc si l'argument l
, r
ne sont pas réellement transmises à la fonction en tant que données. Pourquoi cela s'est-il produit ?
function sort(data){
if(data.length < 2){
return data;
}
else{
var l = [];
var r = [];
var pivot = parseInt(data.length/2);
for(i=0; i<data.length; i++){
if(data[i] > data[pivot]){
r.push(data[i]);
}
else{
l.push(data[i]);
}
}
return sort(l).concat(sort(r));
}
}