[알고리즘]section 7-2_버블 정렬

Yul·2022년 5월 25일
0

Algorithm

목록 보기
9/9

문제

버블 정렬

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

  • 입력예제
    6
    13 5 11 7 23 15

  • 출력예제
    5 7 11 13 15 23

문제풀이

  1. 선택정렬과 비슷한 방식으로 i와 j가 함께 돌아간다.
  2. j는 i의 바로 다음 자리부터 돌면 되기 때문에 for문 조건문을 j < arr.length-i-1 이렇게 설정한다.

코드_내가 푼 코드

function solution(arr) {
  let answer = arr;
  for(let i = 0; i < arr.length-1; i++){
    for(let j = i; j < arr.length; j++){
      if(arr[j] > arr[j+1]){
        let tmp = arr[j];
        arr[j] = arr[j+1]
        arr[j+1] = tmp
      }
    }
  }
  return answer;
}
let a = [13, 5, 11, 7, 23, 15];
console.log(solution(a));

코드_선생님의 코드

function solution(arr) {
  let answer = arr;
  for(let i = 0; i < arr.length-1; i++){
    for(let j = i; j < arr.length-i-1; j++){
      if(arr[j] > arr[j+1]){
        [arr[j], arr[j+1]] = [arr[j+1], arr[j]]; 
      }
    }
  }
  return answer;
}
let a = [13, 5, 11, 7, 23, 15];
console.log(solution(a));

노트

선택정렬과 버블정렬은 비슷해보이지만 선택정렬은 버블정렬과 다르게 N번의 교환을 하지 않는다.
매번 사이클마다 한 번의 교환만 함으로 선택정렬이 더 나은 방법이다. 아래 블로그에서 잘 정리가 돼있으므로 참고

https://velog.io/@minji0801/버블정렬-vs-선택정렬-vs-삽입정렬-차이-제대로-알고가자

출처: https://inf.run/CPjy

profile
자바스크립트 도장깨기👊

0개의 댓글