これが私が書いたクイックソートコードです。基本ケースに到達できないため、関数は機能しません。ピボットをコンソールに記録するr
とl
、並べ替え関数が何回呼び出されても同じままです。したがって、引数l
,r
が実際にはデータとして関数に渡されていないのではないかと思います。なぜそれが起こったのですか?
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));
}
}