(알고리즘) 선택 정렬 / 버블 정렬

호두파파·2022년 2월 3일
0

알고리즘 연습

목록 보기
55/60


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

출력설명

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

입력설명

  • [13, 5, 11, 7, 23, 15]

출력예제

  • [5, 7, 11, 13, 15, 23]

선택정렬

  • 제자리 정렬(in-place sorting) 알고리즘의 하나이며, 다른 추가 메모리를 요구하지 않는 정렬 방법이다.
  • 해당 순서에 원소를 넣을 위치는 이미 정해져 있고, 어떤 원소를 넣을지 선택하는 알고리즘이다.
  • 최소값을 구하는 과정은 다음과 같다
    • 주어진 배열 중에서 최소값을 찾는다.
    • 그 값을 맨 앞에 위치한 값과 교체한다(패스)
    • 맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체한다.
    • 하나의 원소만 남을때까지 위 과정을 반복한다.

// 선택정렬
function solution(arr) {
  let answer = arr;
  for (let i = 0; i < arr.length; i++) {
    let least = i;
    for (let j = i + 1; j < arr.length; j++) {
      if (arr[j] < arr[least]) {
        least = j;
      }
    }
    [arr[i] ,arr[least]] = [arr[least], arr[i]];
  }
  return answer;
}


버블정렬

  • 서로 인접한 두 원소를 검사해 정렬하는 알고리즘이다. 인접한 2개의 레코드를 비교해 크기가 순서대로 되어 있지 않으면 서로 교환한다.
  • 선택 정렬과 기본 개념이 유사하다.

function solution2(arr) {
  let answer = arr;
  for (let i = 0; i < arr.length; i++) {
    for (let j = i + 1; j < arr.length; j++) {
      if (arr[i] > arr[j]) {
        [arr[i] ,arr[j]] = [arr[j], arr[i]];
      }
    }
  }
  return answer;
}

profile
안녕하세요 주니어 프론트엔드 개발자 양윤성입니다.

0개의 댓글