Algorithm JS - 버블 정렬

jiny·2022년 9월 5일
0

JavaScript Algorithm

목록 보기
2/23
post-thumbnail

버블 정렬

  • 배열의 두 인접한 요소들을 비교하여 가장 큰 값이 배열의 가장 뒷 번째 index로 정렬 후 이를 반복하여 배열을 정렬하는 기법

과정
1. 두 인접 요소를 비교
2. 만약 배열의 n번째 인덱스 값보다 n+1번째 인덱스 값이 더 클 경우 n번째 값과 n+1번째 값을 서로 교환
3. 이를 (전체 배열 길이 - 1)만큼 반복

Big O

최상 시간 복잡도

  • O(n)

최악 시간 복잡도

  • O(n2)

평균 시간 복잡도

  • O(n2)

평균 공간 복잡도

  • O(n)

소스 코드

/**
 * 버블 정렬
 * ▣ 문제
 * N개이 숫자가 입력되면 오름차순으로 정렬하여 출력하는 프로그램을 작성하세요. 정렬하는 방법은 버블정렬입니다.
 * ▣ 입력설명
 * 첫 번째 줄에 자연수 N(1<=N<=100)이 주어집니다.
 * 두 번째 줄에 N개의 자연수가 공백을 사이에 두고 입력됩니다. 각 자연수는 정수형 범위 안에 있습니다.
 * ▣ 출력설명
 * 오름차순으로 정렬된 수열을 출력합니다.
 * ▣ 입력예제 1
 * 6
 * 13 5 11 7 23 15
 * ▣ 출력예제 1
 * 5 7 11 13 15 23
 */



function solution() {
     let answer = require('fs').readFileSync(__dirname+'/input.txt').toString().trim().split("\n").slice(1).join().split(' ').map(i=>Number(i));

     let temp = 0;

     for(let i = 0; i < answer.length - 1; i++) {
          for(let j = 0; j < answer.length; j++) {
               if(answer[j] > answer[j+1]) {
                    temp = answer[j];
                    answer[j] = answer[j+1];
                    answer[j+1] = temp;
               }
          }
     }
     return answer;
}

console.log(solution());

레퍼런스

jimmy48 - 버블 정렬 (이미지 참고)

https://velog.io/@jimmy48/%EB%B2%84%EB%B8%94%EC%A0%95%EB%A0%AC

0개의 댓글