[알고리즘] sort() 없이 배열 오름차순 정렬 (버블 정렬)

Tai Song·2022년 7월 7일
0

알고리즘

목록 보기
3/8
post-thumbnail

정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다.

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;
};
profile
Read The Fucking MDN

0개의 댓글