정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다.
const swap = function (idx1, idx2, arr) {
[arr[idx1], arr[idx2]] = [arr[idx2], arr[idx1]];
// 배열의 주어진 2개의 인덱스의 순서를 변경하는 함수
};
let bubbleSort = function (arr) {
let len = arr.length;
// 배열의 길이를 저장
for (let i = 0; i < len; i++) {
// 배열의 길이까지 반복
let swaps = 0;
// 위치 바꾼 횟수 카운트
for (let j = 0; j < len - 1 - i; j++) {
// i가 반복된 횟수를 뺀 만큼 반복
// 1을 빼는 이유는, j + 1로 다음 항을 비교하기 때문
if (arr[j] > arr[j + 1]) {
// 해당 요소가 다음 요소보다 크면
swaps++;
// 횟수 카운트하고
swap(j, j + 1, arr);
// 둘이 자리 바꿀 것
}
}
if (swaps === 0) {
// 모든 반복을 했는데 아무것도 바뀌지 않았다면
break; // 원배열 리턴
}
}
return arr;
};