정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다.
let output = bubbleSort([2, 1, 3]);
console.log(output); // --> [1, 2, 3]
한번 수행할 때마다 반복횟수가 줄어들어야 하므로 이중 for문을 사용해야겠다. 1회전마다 j의 범위가 1씩 줄어들게 설정하고, 배열의 요소는 reference type임을 이용해여 임시변수를 활용해 배열의 요소를 옮겨줘야겠다.
const bubbleSort = function (arr) { // TODO: 여기에 코드를 작성합니다. let temp; for (let i = 0; i < arr.length-1; i++) { for (let j = 0; j < arr.length-1-i; j++) { if (arr[j] > arr[j + 1]) { //[3,1] temp = arr[j] arr[j] = arr[j + 1] arr[j+1] = temp//[1,3] } } } return arr };
이중반복문에서 이미 실행한 i번째 요소를 건들이지 않아야하기 때문에 j의 범위가 arr.length-i-1 임을 이해했다.
그리고 temp라는 임시변수를 통해 값을 저장해두고, 바뀐 자리에 할당해주는 코드가 신기했고 다른 문제에서도 활용할 수 있도록 해야겠다.