์ ๋ ฌ
1. ๋ฒ๋ธ ์ ๋ ฌ
2. ์ ํ ์ ๋ ฌ
3. ์ฝ์ ์ ๋ ฌ
4. ๋ณํฉ ์ ๋ ฌ
5. ํต ์ ๋ ฌ
6. ํ ์ ๋ ฌ
1. ๋ฒ๋ธ ์ ๋ ฌ
์ธ์ ํ ๋ ๊ฐ์ ๊ฐ์ ๋น๊ตํ์ฌ ํฐ ๊ฐ์ ๋ค๋ก ๋ณด๋ด๋ ๋ฐฉ์์ผ๋ก ์ ๋ ฌ
- ๋์ ๊ณผ์
1. ๋ฐฐ์ด์ ์ฒ์๋ถํฐ ๋๊น์ง ์ํํ๋ฉฐ ์ธ์ ํ ๋ ์์๋ฅผ ๋น๊ต
2. ์ ์์๊ฐ ๋ค ์์๋ณด๋ค ํฌ๋ค๋ฉด ์์น ๊ตํ
3. ํ ๋ฒ์ ์ํ๊ฐ ๋๋๋ฉด ๊ฐ์ฅ ํฐ ๊ฐ์ด ๋ฐฐ์ด์ ๋์ผ๋ก ์ด๋
4. ์ด๋ฅผ ๋ฐฐ์ด์ด ์ ๋ ฌ๋ ๋๊น์ง ๋ฐ๋ณต
- ์ฝ๋ ๊ตฌํ
void bubbleSort(int arr[], int n) {
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;
}
}
}
}
2. ์ ํ ์ ๋ ฌ
๋ฐฐ์ด์์ ๊ฐ์ฅ ์์ ์์๋ฅผ ์ฐพ์ ๋งจ ์์ ์์์ ๊ตํํ๋ ๋ฐฉ์์ผ๋ก ์ ๋ ฌ
- ๋์ ๊ณผ์
1. ๋ฐฐ์ด์์ ์ต์๊ฐ์ ์ฐพ์ ์ฒซ ๋ฒ์งธ ์์์ ๊ตํ
2. ๋ค์ ์์ ๊ฐ์ ์ฐพ์ ๋ ๋ฒ์งธ ์์์ ๊ตํ
3. ์ด๋ฅผ ๋ฐฐ์ด์ด ์ ๋ ฌ๋ ๋๊น์ง ๋ฐ๋ณต
- ์ฝ๋ ๊ตฌํ
void selectionSort(int arr[], int n) {
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[i];
arr[i] = arr[minIdx];
arr[minIdx] = temp;
}
}
3. ์ฝ์ ์ ๋ ฌ
ํ์ฌ ์์๋ฅผ ์ ์ ํ ์์น์ ์ฝ์ ํ๋ฉฐ ์ ๋ ฌ
- ๋์ ๊ณผ์
1. ๋ ๋ฒ์งธ ์์๋ถํฐ ์์ํ์ฌ ์์ ์์๋ค๊ณผ ๋น๊ต
2. ์์ ๋ณด๋ค ํฐ ๊ฐ์ ๋ง๋๋ฉด ๋ค๋ก ์ด๋
3. ์ ์ ํ ์์น์ ์ฝ์
- ์ฝ๋ ๊ตฌํ
void insertionSort(int arr[], int n) {
for (int i = 1; i < n; i++) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
}
4. ๋ณํฉ ์ ๋ ฌ
๋ถํ ์ ๋ณต(Divide and Conquer) ๋ฐฉ์์ผ๋ก ๋ฐฐ์ด์ ๋ฐ์ผ๋ก ๋๋๊ณ ์ ๋ ฌ ํ ํฉ์น๋ ๋ฐฉ์
- ๋์ ๊ณผ์
1. ๋ฐฐ์ด์ ๋ฐ์ผ๋ก ๋๋์ด ์ฌ๊ท์ ์ผ๋ก ์ ๋ ฌ
2. ๋ ๊ฐ์ ์ ๋ ฌ๋ ๋ฐฐ์ด์ ํ๋๋ก ํฉ์นจ
- ์ฝ๋ ๊ตฌํ
void merge(int arr[], int left, int mid, int right) {
int n1 = mid - left + 1;
int n2 = right - mid;
int L[n1], R[n2];
for (int i = 0; i < n1; i++) L[i] = arr[left + i];
for (int i = 0; i < n2; i++) R[i] = arr[mid + 1 + i];
int i = 0, j = 0, k = left;
while (i < n1 && j < n2) {
if (L[i] <= R[j]) arr[k++] = L[i++];
else arr[k++] = R[j++];
}
while (i < n1) arr[k++] = L[i++];
while (j < n2) arr[k++] = R[j++];
}
void mergeSort(int arr[], int left, int right) {
if (left < right) {
int mid = left + (right - left) / 2;
mergeSort(arr, left, mid);
mergeSort(arr, mid + 1, right);
merge(arr, left, mid, right);
}
}
5. ํต ์ ๋ ฌ
ํผ๋ฒ(pivot)์ ๊ธฐ์ค์ผ๋ก ์์ ๊ฐ๊ณผ ํฐ ๊ฐ์ ๋ถํ ํ์ฌ ์ ๋ ฌํ๋ ๋ฐฉ์
- ๋์ ๊ณผ์
1. ๋ฐฐ์ด์์ ์์์ ํผ๋ฒ์ ์ ํ
2. ํผ๋ฒ๋ณด๋ค ์์ ๊ฐ์ ์ผ์ชฝ, ํฐ ๊ฐ์ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ถํ
3. ๊ฐ ๋ถ๋ถ์ ์ฌ๊ท์ ์ผ๋ก ์ ๋ ฌ
- ์ฝ๋ ๊ตฌํ
int partition(int arr[], int low, int high) {
int pivot = arr[high];
int i = low - 1;
for (int j = low; j < high; j++) {
if (arr[j] < pivot) {
i++;
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
int temp = arr[i + 1];
arr[i + 1] = arr[high];
arr[high] = temp;
return i + 1;
}
void quickSort(int arr[], int low, int high) {
if (low < high) {
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
6. ํ ์ ๋ ฌ
ํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ด์ฉํด ์ต๋๊ฐ ๋๋ ์ต์๊ฐ์ ์ถ์ถํ์ฌ ์ ๋ ฌ
- ๋์ ๊ณผ์
1. ์ฃผ์ด์ง ๋ฐฐ์ด์ ์ต๋ ํ์ผ๋ก ๋ณํ
2. ๋ฃจํธ ๊ฐ์ ๊บผ๋ด๊ณ ํ์ ์ฌ๊ตฌ์ฑ
3. ์ด๋ฅผ ๋ฐฐ์ด์ด ์ ๋ ฌ๋ ๋๊น์ง ๋ฐ๋ณต
- ์ฝ๋ ๊ตฌํ
void heapify(int arr[], int n, int i) {
int largest = i;
int left = 2 * i + 1;
int right = 2 * i + 2;
if (left < n && arr[left] > arr[largest])
largest = left;
if (right < n && arr[right] > arr[largest])
largest = right;
if (largest != i) {
int temp = arr[i];
arr[i] = arr[largest];
arr[largest] = temp;
heapify(arr, n, largest);
}
}
void heapSort(int arr[], int n) {
for (int i = n / 2 - 1; i >= 0; i--)
heapify(arr, n, i);
for (int i = n - 1; i > 0; i--) {
int temp = arr[0];
arr[0] = arr[i];
arr[i] = temp;
heapify(arr, i, 0);
}
}
์ฐธ๊ณ ์ฌ์ดํธ
๊ธฐ๋ณธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ(Sorting Algoritm) ์์ฝ ์ ๋ฆฌ (์ ํ, ์ฝ์ , ๋ฒ๋ธ, ํฉ๋ณ, ํต) v1.1
์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ n๊ฐ์ ์ซ์๊ฐ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ก์ ๋, ์ด๋ฅผ ์ฌ์ฉ์๊ฐ ์ง์ ํ ๊ธฐ์ค์ ๋ง๊ฒ ์ ๋ ฌํ์ฌ ์ถ๋ ฅํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.์๋ฅผ ๋ค์ด n๊ฐ์ ์ซ์๊ฐ ์ ์ฅ๋์ด์๋ ๋ฐฐ์ด์, ์ค๋ฆ์ฐจ์์ ์กฐ๊ฑด์ผ๋ก
hsp1116.tistory.com
๋ฌธ์ ๊ฐ ์์ผ๋ฉด ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์ !
ํผ๋๋ฐฑ์ ์ธ์ ๋ ํ์์ ๋๋ค <3
'๐ก Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ๋์์ด๊ฐ ๋ง๋ ๋ง์๋ ์์ - ๋ฐฑํธ๋ํน (Lv. Sliver2) (0) | 2025.02.10 |
---|---|
[SQL] ์ํ ๋ณ ์คํ๋ผ์ธ ๋งค์ถ ๊ตฌํ๊ธฐ - INNER JOIN (Lv. 2) (0) | 2025.02.08 |
[Subsequence] LIS์ LCS (0) | 2025.02.03 |
[Graph] ๊น์ด ์ฐ์ ํ์(DFS)๊ณผ ๋๋น ์ฐ์ ํ์(BFS) (0) | 2025.02.03 |
[Greedy] Knanspack ์๊ณ ๋ฆฌ์ฆ - C์ธ์ด (0) | 2025.02.03 |