티스토리 뷰

반응형

배열을 오름차순으로 정렬할 수 있는 방법은 여러 가지가 있다. sort() 메서드를 사용하는 방법부터, 다양한 정렬 알고리즘까지 정리해보자.

 

 

 

1. sort()

function solution(arr) {
  let answer = arr;
  
  arr.sort((a, b) => a - b);
  
  return answer;
}

 

 

2. 선택 정렬

선택 정렬은 한 요소를 나머지 요소와 하나씩 비교하며 자리를 교체하는 알고리즘이다. 이중 for 문을 사용한다.

 

function solution(arr) {
  let answer = arr;
  
  for (let i = 0; i < arr.length; i++) {
    let idx = i;
    for (let j=i+1; j < arr.length; j++) {
        // 더 작은 값이 나타나면 해당 값의 인덱스를 idx에 넣어준다.
        if (arr[j] < arr[idx]) idx = j;
    }
    // 현재 i 값과 j의 자리 바꾸기
    [arr[i], arr[idx]] = [arr[idx], arr[i]];
  }
  
  return answer;
}

 

 

3. 버블 정렬

버블 정렬은 인접한 두 요소를 비교하며 정렬하는 알고리즘이다.

첫 순환이 완료되면 맨 뒤의 값이 결정된다.

다음 순환에서는 결정된 값을 제외하고 순환한다.

 

function solution(arr) {
  let answer = arr; // 얕은 복사
  
  for (let i = 0; i < arr.length; i++) {
    // 뒤부터 값이 결정되므로 i 만큼 계속 길이를 줄인다.
    for (let j = 0; j < arr.length-1-i; j++) {
      // 버블 정렬
      if (arr[j] > arr[j + 1]) {
        // 자리 바꾸기
        [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]
      }
    }
  }
  
  return answer;
}

 

 

반응형
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31