출처 : https://sweet-snapper-a98.notion.site/db53f9bf0c5544bba02442bd5be8bdd4
public class BubbleSort {
public static void bubbleSort(int[] arr) {
final int length = arr.length;
for (int i = 0; i < length; i++) {
for (int j = 0; j < length - i; j++) {
if (j + 1 < length && arr[j] > arr[j + 1]) {
**arr[j] = arr[j] + arr[j + 1];
arr[j + 1] = ar**r[j] - arr[j + 1];
arr[j] = arr[j] - arr[j + 1];
}
}
}
}전체 원소 중에서 가장 작은 원소를 찾아 선택하여 첫 번째 원소와 자리를 교환한다.
그다음 두 번째로 작은 원소를 찾아서 선택하여 두 번째 원소와 자리를 교환한다.
그다음에는 세 번째로 작은 원소를 찾아 선택하여 세 번째 원소와 자리를 교환한다.
이 과정을 반복하면서 정렬이 완성된다.
public class SelectionSort {
public static void selectionSort(int[] arr) {
final int length = arr.length;
for (int i = 0; i < length; i++) {
int min = i;
for (int j = i + 1; j < length; j++) {
if (arr[j] < arr[min]) {
min = j;
}
}
if (min == i) {
continue;
}
arr[min] = arr[min] + arr[i];
arr[i] = arr[min] - arr[i];
arr[min] = arr[min] - arr[i];
}
}
}
정렬되어 있는 부분집합에 정렬할 새로운 원소의 위치를 삽입하는 방법
정렬할 자료를 두 개의 부분집합 S와 U로 가정한다.
부분집합 S : 정렬된 앞 부분의 원소들
부분집합 U : 아직 정렬되지 않은 나머지 원소들
정렬되지 않은 부분집합 U의 원소를 하나씩 꺼내서 이미 정렬되어 있는 부분집합 S의 마지막 원소부터 비교하면서 위치를 찾아 삽입한다.
삽입 정렬을 반복하면서 부분집합 S의 원소는 하나씩 늘리고 부분집합 U의 원소는 하나씩 감소하게 된다.
부분집합 U가 공집합이 되면 정렬이 완성된다.
public class InsertionSort {
public static void insertionSort(int[] arr) {
final int length = arr.length;
for (int i = 1; i < length; i++) {
final int key = arr[i];
int position = i;
while (position > 0 && key < arr[position - 1]) {
arr[position] = arr[position - 1];
position--;
}
arr[position] = key;
}
}
}
pivot), 일반적으로 전체 원소 중에서 가운데에 위치한 원소를 선택한다.퀵정렬 로직

public class QuickSort {
public static void quickSort(int[] arr) {
quickSort(arr, 0, arr.length -1);
}
private static void quickSort(int[] arr, int begin, int end) {
if (begin >= end) {
return;
}
int middle = begin + (end - begin) / 2;
int pivot = arr[middle];
int left = begin;
int right = end;
while (left <= right) {
while (arr[left] < pivot) {
left++;
}
while (arr[right] > pivot) {
right--;
}
if (left <= right) {
arr[left] = arr[left] + arr[right];
arr[right] = arr[left] - arr[right];
arr[left] = arr[left] - arr[right];
left++;
right--;
}
}
if (begin < right) {
quickSort(arr, begin, right);
}
if (end > left) {
quickSort(arr, left, end);
}
}
}
view rawQuickSort.java hosted with ❤ by GitHub

