[java] 소트 알고리즘
소트 알고리즘은 정렬된 데이터를 얻기 위해 사용되는 알고리즘입니다. 배열이나 리스트에 포함된 요소들을 순서대로 재배열하여 정렬된 결과를 얻을 수 있습니다. 여러 가지 소트 알고리즘이 존재하며, 각각의 알고리즘은 다양한 시간 복잡도와 성능 특성을 가지고 있습니다.
버블 소트 (Bubble Sort)
버블 소트는 인접한 두 개의 요소를 비교하고 필요한 경우 위치를 교환하는 과정을 반복하여 정렬을 수행합니다. 가장 큰 요소가 배열의 마지막으로 이동할 때까지 반복 작업을 수행하며, 각 패스마다 가장 큰 요소가 정렬의 마지막으로 이동합니다.
public void bubbleSort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
// 두 요소의 위치 교환
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
선택 소트 (Selection Sort)
선택 소트는 정렬되지 않은 부분에서 가장 작은 요소를 찾아 첫 번째 요소와 교환하는 과정을 반복하여 정렬을 수행합니다. 첫 번째 요소를 고정한 후, 나머지 요소들 중 가장 작은 값을 찾아 첫 번째 요소와 교환합니다. 이러한 과정을 모든 요소에 대해 반복하면서 정렬을 완성합니다.
public void selectionSort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n-1; i++) {
int minIdx = i;
for (int j = i+1; j < n; j++) {
if (arr[j] < arr[minIdx]) {
minIdx = j;
}
}
// 가장 작은 요소와 첫 번째 요소 교환
int temp = arr[minIdx];
arr[minIdx] = arr[i];
arr[i] = temp;
}
}
위의 예시는 자바로 구현된 버블 소트와 선택 소트의 예시입니다. 이 외에도 삽입 소트, 퀵 소트, 병합 소트 등 다양한 소트 알고리즘이 있습니다.
더 많은 소트 알고리즘에 대해서는 이곳에서 참조할 수 있습니다.