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