거의 다 정렬이 된 경우엔 swap 변수를 사용해서 교체를 최소화 할 수 있습니다!
function bubbleSort(arr) {
var noSwaps;
for (var i = arr.length; i > 0; i--) {
noSwaps = true;
for (var j = 0; j < i - 1; j++) {
// swap!
// console.log(arr, arr[j], arr[j + 1]);
if (arr[j] > arr[j + 1]) {
let temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
noSwaps = false;
// console.log('Swap');
}
}
// console.log('one loop pass through');
if (noSwaps) break;
}
return arr;
}
정렬이 된경우 안쪽 포문에서 swap=false에 걸리지 않게 되고 그럼 swap이 true인 상태가 유지되므로 바깥쪽 포문이 break되면서 불필요한 loop를 중지하게 됩니다.