알고리즘

버블정렬

살다보니개발자 2022. 12. 15. 23:19

N개이 숫자가 입력되면 오름차순으로 정렬하여 출력하는 프로그램을 작성하세요. 정렬하는 방법은 버블정렬입니다.

 

오름차순으로 정렬된 수열을 출력합니다.

 

입력예제

13 5 11 7 23 15

 

 

출력예제

5 7 11 13 15 23

 

 

function solution(arr) {
    //얕은복사로 인해 arr가 바뀌면 answer 값도 바뀜
    let answer = arr;


    //버블 정렬은 특정요소와 그 특정요소의 인덱스 +1 요소와 크기를 비교하기 때문에
    // 맨마지막 요소는 해당 마지막요소의 +1 인덱스가 없기때문에 arr.length -1 까지의 길이만 반복문을 실행한다.
    for (let i = 0; i < arr.length - 1; i++) {

        //버블정렬은 맨마지막요소가 차례차례 가장 큰 수가 뒤로오기 때문에,
        //이미 비교가 끝난 마지막 요소는 또다시 비교해줄 필요가없다.
        //그래서 arr.length - i - 1 까지의 반복문을 실행한다.
        for (let j = 0; j < arr.length - i - 1; j++) {

            //arr[j] = 특정요소와 arr[j+1] = 특정요소 인덱스 + 1 값을 비교 조건
            if (arr[j] > arr[j + 1]) {

                // arr[j]가 arr[j+1] 보다 크다면 서로의 위치를 바꿔준다.
                [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
            }
        }
    }
    return answer;


}

let arr = [13, 5, 11, 7, 23, 15];
console.log(solution(arr));

'알고리즘' 카테고리의 다른 글

삽입정렬  (0) 2022.12.22
Special Sort(구글 인터뷰)  (0) 2022.12.18
선택정렬  (0) 2022.12.13
교육과정설계(큐)  (0) 2022.12.12
공주구하기(큐)  (0) 2022.12.11