1
필자는 거품 정렬을위한 기능이있어서 확실하게 작동한다고 느꼈다. 나는 왜 함수가 단순히 undefined를 반환하는지 이해하지 못한다. 다시 실행해야하는지 여부를 확인했습니다. my reRun 변수가 true로 설정되면 재귀가 발생하고 false로 설정된 경우 배열을 반환해야합니다.왜 내 버블 정렬 함수가 else를 건너 뛰고 정의되지 않은 값을 반환합니까?
bubbleSort(array);
에 : 당신이 줄을 패치해야
var bubbleSort = function(array) {
// Your code here.
var tmp;
var next;
var curr;
var reRun = false;
console.log(reRun)
for(i = 0; i < array.length; i++){
// set curr var to current item and tmp to the next one
next = array[i+1];
// console.log('next', next)
curr = array[i];
// console.log('curr', curr)
// check to see if the curr value is greater than the nex
if(curr > next){
// if it is greater than set temp to be the next val and swap
// the two positions
array[i] = next
array[i+1] = curr;
reRun = true;
}
}
if(reRun === true){
bubbleSort(array)
} else if(reRun === false){
return array;
}
};
console.log(bubbleSort([2, 1, 3])); // yields [1, 2, 3]
재귀 호출을 수행 할 때 반환하는 모든 것을 반환하는 것을 잊지 마십시오 :'return bubbleSort (array)'. 즉 재귀가 적절하지 않은 경우 while 루프를 대신 사용하십시오. – georg
한 번에 너무 많은 루핑을합니다 :'next = array [i + 1];'마지막으로'undefined'를 지정합니다. – trincot
제안 사항 .. 당신은 다음을 확인해야합니다 : 배열 [i + 1]은 i가
scaisEdge