[CodeKata] Bubble Sort - 버블 정렬

임창현·2022년 11월 29일
0

CodeKata

목록 보기
3/4
post-thumbnail

Quiz!

버블정렬(Bubble Sort)

버블 정렬은 인접한 데이터를 교환해서 정렬하는 알고리즘입니다. 알고리즘의 정렬되는 모습이 마치 거품처럼 보인다고 해서 붙여진 이름입니다.

아래와 같은 정렬되지 않은 수가 있을 때, index 0 <-> 1 부터 교환하기 시작합니다. 인접한 두 수를 비교하여 더 큰 것을 우측으로 이동시킵니다. 6 5 3 2 8 -> 5 6 3 2 8

그 다음은 index 1 <-> 2 5 6 3 2 8 -> 5 3 6 2 8
그 다음은 index 2 <-> 3 5 3 6 2 8 -> 5 3 2 6 8
그 다음은 index 3 <-> 4 5 3 2 6 8 -> 5 3 2 6 8 이렇게 제일 마지막 두 수 까지 비교하면, 제일 큰 수가 제일 마지막 index에 위치하는 것을 알 수 있습니다.

다시 처음부터 시작합니다.
5 3 2 6 8 -> 3 5 2 6 8
3 5 2 6 8 -> 3 2 5 6 8
3 2 5 6 8 -> 3 2 5 6 8
이번 교환에는 index 2까지 비교하고 멈추면 됩니다. 마지막 index는 이미 제일 큰 수가 정렬된 상태이기 때문입니다. 이런식으로 계속 비교하고 교체하면 됩니다.!

Problem

nums라는 배열을 주면, 버블정렬 알고리즘으로 배열을 정렬해주세요.


나의 풀이

const bubbleSort = nums => {
  // 여기에 코드를 작성해주세요.
  for(let j = 0; j < nums.length; j++){
    for(let i = 0; i < nums.length; i++){
     if(nums[i] > nums[i+1]){
        let first = nums[i];
        let second = nums[i+1];
        nums.splice(i, 1, second);
        nums.splice(i+1, 1, first);
      }
    }
  }
  return nums;
}

배운점

splice()

배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경합니다.

구문

array.splice(start, deleteCount(option), item(option))

  • start : 배열의 변경을 시작할 인덱스입니다.
  • deleteCount : 배열에서 제거할 요소의 수입니다.
  • item : 배열에 추가할 요소입니다.
// 예시
const months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb');
// inserts at index 1
console.log(months);
// expected output: Array ["Jan", "Feb", "March", "April", "June"]
months.splice(4, 1, 'May');
// replaces 1 element at index 4
console.log(months);
// expected output: Array ["Jan", "Feb", "March", "April", "May"]
profile
Hi there 👋 i'm backend developer

0개의 댓글