코딩응애의 개발블로그

코플릿 풀면서 알게된 점 (버블 정렬) 본문

코드스테이츠(부트캠프)

코플릿 풀면서 알게된 점 (버블 정렬)

이너멜 2022. 8. 25. 11:09

버블정렬 

옆에 있는 값과 비교해서 더 큰값을 뒤로 보냄 구현하기는 가장 쉽지만 효율성은 가장 떨어진다.

배열의 인접한 2개의 값을 선택하고 비교하는데 왼쪽이 오른쪽보다 크면 서로 자리를 바꿔줌 여기서 끝이 아니라 오른쪽으로 이동해서 아까 한 과정을 반복 아래 움짤 처럼 

시간복잡도는 O(n^2) 이래서 구현이 가장 단순함에도 불구하고 거의 쓰이지 않는다. 

const bubbleSort = function (arr) {
  for (let i = 0; i < arr.length; i++) {
    let swap; // 스왑해주기 위한 변수 
    for (let j = 0; j < arr.length - 1 - i; j++) {
      if (arr[j] > arr[j + 1]) { // 왼쪽에 있는 수가 오른쪽에 있는 수보다 크다면 
        swap = arr[j];
        arr[j] = arr[j + 1]; // 이건 왼쪽과 오른쪽 수를 변경해준다는 의미 예를들어 10,5 라면 10이 더크니까 조건 충족하고 
        // 10과 5의 위치를 바꿔야 하기 때문에 일단 10이 있는 위치에 5를 넣어주고 또 반대로 5가 있는 위치에 
        // 10을 넣어주어야 하기 때문에 
        arr[j + 1] = swap; // 이렇게 해주면 10이 arr[j+1] 위치에 가게된다.
      }
    }
    if (!swap) { // 다 정렬이 됬다면 undefined 나옴 왜냐면 두번째 for문 안에 조건을 충족하는게 없기때문에
    // swap이라는 변수에 들어갈게 없어서 undefined 나오는것임 그때 break를 해서 빠져나온다
      break;
    }
  }
  console.log(arr)
};
bubbleSort([1, 10, 5])
Comments