내가 작성한 코드는 quicksort입니다. 이 함수는 기본 케이스에 도달 할 수 없기 때문에 작동하지 않습니다. 콘솔에 피벗 r
및 l
을 기록하면 sort 함수가 몇 번 호출 되더라도 상관 없습니다. 그래서 인수가 l
, r
이 실제로 데이터로 함수로 전달되지 않는지 궁금합니다. 왜 그런 일이 일어 났습니까?JavaScript 퀵 소트에서 무한 재귀?
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));
}
}
각각의 재귀 호출을 덮어 쓰게됩니다. sort 함수 밖에서 초기화해야합니다. – marteljn
@marteljn 예. 하지만 내가 반환하기 전에 console.log (l)을 넣으면 같은 배열을 출력합니다. 그래서 혼란 스럽습니다. –
나는 'originalArray.sort()'를 호출하면 무엇이 문제가됩니까? –