[javascript] 정렬 알고리즘

정렬 알고리즘은 데이터 요소를 일정한 순서로 재배열하는 알고리즘입니다. 여러 가지 방법으로 배열을 정렬할 수 있으며, 각각의 방법은 고유한 장단점을 가지고 있습니다.

버블 정렬 (Bubble Sort)

버블 정렬은 서로 인접한 두 요소를 비교하고 필요에 따라 교환하는 방식으로 동작합니다. 이 과정을 여러 번 반복하여 정렬을 완성합니다.

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

선택 정렬 (Selection Sort)

선택 정렬은 주어진 배열에서 최솟값을 찾아 맨 앞부터 차례대로 채워가는 방식으로 동작합니다.

function selectionSort(arr) {
  let len = arr.length;
  for (let i = 0; i < len - 1; i++) {
    let minIndex = i;
    for (let j = i + 1; j < len; j++) {
      if (arr[j] < arr[minIndex]) {
        minIndex = j;
      }
    }
    if (minIndex !== i) {
      let temp = arr[i];
      arr[i] = arr[minIndex];
      arr[minIndex] = temp;
    }
  }
  return arr;
}

삽입 정렬 (Insertion Sort)

삽입 정렬은 각 요소를 이미 정렬된 배열 부분과 비교하여 적절한 위치에 삽입하는 방식으로 동작합니다.

function insertionSort(arr) {
  let len = arr.length;
  for (let i = 1; i < len; i++) {
    let current = arr[i];
    let j = i - 1;
    while (j >= 0 && arr[j] > current) {
      arr[j + 1] = arr[j];
      j--;
    }
    arr[j + 1] = current;
  }
  return arr;
}

정렬 알고리즘은 데이터 처리에 있어 매우 중요한 부분이며, 각각의 알고리즘이 고유한 시간 및 공간 복잡도를 가지고 있습니다. 따라서 실제 상황에 맞게 적절한 정렬 알고리즘을 선택하는 것이 중요합니다.