ν°μ€ν 리 λ·°
[μ°μ μμ ν] μ μ리 μ λ ¬(μ νμ λ ¬, μ½μ μ λ ¬)
ν΄λμκ·Έ 2021. 2. 8. 00:30μ°μ μμ νλ₯Ό μ΄μ©ν μ λ ¬
: λΉκ΅ κ°λ₯ν μμ μ§ν©μ μ λ ¬νλλ° μ°μ μμ ν μ΄μ© κ°λ₯
1. μ ν μ λ ¬
- μ°μ μμ νλ₯Ό 무μ리μ€νΈλ‘ ꡬν (μ°μ μμ νμ νλͺ©λ€μ 리μ€νΈμ μμ μμλ‘ μ μ₯)
- μ€νμκ° : O(n^2) (μ°μ μμ νμ μ½μ νλλ° O(n)μκ° μμ + μ λ ¬μμλ‘ μμ νλλ° n+(n-1)+(N-2)+... μκ° μμ)
2. μ½μ μ λ ¬
- μ°μ μμ νλ₯Ό μμ리μ€νΈλ‘ ꡬν (μ°μ μμ νμ νλͺ©λ€μ 리μ€νΈμ ν€ μ λ ¬ μμλ‘ μ μ₯)
- μ€νμκ° : O(n^2) (μ°μ μμ νμ μ½μ νλλ° n+(n-1)+(N-2)+... μκ° μμ + μ λ ¬μμλ‘ μμ νλλ° O(n)μκ° μμ)
3. μ μ리 μ λ ¬
-리μ€νΈ μ체λ₯Ό μν κ³΅κ° μ΄μΈμ O(1) κ³΅κ° λ§μ μ¬μ©νλ€λ©΄, μ΄λ₯Ό "μ μ리(in-place)"μμ μννλ€κ³ λ§ν¨
nνκ³ μκ΄μλ μμ 곡κ°μ΄λ vs nμ λ°λΌ λ¬λΌμ§λ 곡κ°μ΄λ
μ μ리 μ ν μ λ ¬ μκ³ λ¦¬μ¦
λ¬Έμ : nκ°μ μμ μ μ(μ€λ³΅ κ°λ₯)λ₯Ό μ λ ₯λ°μ, μ ν μ λ ¬μ μ΄μ©νμ¬ μ λ ¬νλ νλ‘κ·Έλ¨μ μμ±
1. ν¬κΈ° nμΈ λ°°μ΄ λμ ν λΉ
2. μ λ ₯ κ° μ μ₯μ μν λ°°μ΄ μ΄μΈμ O(1)μ μΆκ° 곡κ°λ§ μ¬μ©
3. λ°°μ΄μ λ· λΆλΆμ μ λ ¬ μνλ‘ μ μ§, 맀 λ°λ³΅λ§λ€ μ΅λ ν λ²μ κ΅ν μ°μ°λ§ μ¬μ©
μ
λ ₯ μμ 1
8 β¦ n
8 31 48 73 3 65 20 29
μΆλ ₯ μμ 1
β‘3 8 20 29 31 48 65 73 β¦ μ λ ¬ κ²°κ³Ό
μ
λ ₯ μμ 2μΆλ ₯ μμ 2
8 β¦ n
73 65 48 31 29 20 8 3
μΆλ ₯ μμ 2
β‘3 8 20 29 31 48 65 73 β¦ μ λ ¬ κ²°κ³Ό
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void inPlaceSelectionSort(int *A, int n) {// μ μ리 μ ν μ λ ¬
int j, max, tmp = 0;
for (int i = n-1; i >= 1; i--) {
max = i;
for (j = i - 1; j >= 0; j--) {
if (A[j] > A[max]) {
max = j;
}
}
tmp = A[i];
A[i] = A[max];
A[max] = tmp;
}
}
int main() {
int n;
int* A;
scanf("%d", &n);
A = (int*)malloc(sizeof(int) * n);
if (A == NULL) {
printf("Not enough memory!");
return -1;
}
for (int i = 0; i < n; i++) {
scanf("%d", &A[i]);
getchar();
}
inPlaceSelectionSort(A, n);
for (int i = 0; i < n; i++) {
printf(" %d", A[i]);
}
free(A);
return 0;
}
μ μ리 μ½μ μ λ ¬ μκ³ λ¦¬μ¦
λ¬Έμ : nκ°μ μμ μ μ(μ€λ³΅ κ°λ₯)λ₯Ό μ λ ₯λ°μ, μ ν μ λ ¬μ μ΄μ©νμ¬ μ λ ¬νλ νλ‘κ·Έλ¨μ μμ±
1. ν¬κΈ° nμΈ λ°°μ΄ λμ ν λΉ
2. μ λ ₯ κ° μ μ₯μ μν λ°°μ΄ μ΄μΈμ O(1)μ μΆκ° 곡κ°λ§ μ¬μ©
3. λ°°μ΄μ μ λΆλΆμ μ λ ¬ μνλ‘ μ μ§, 맀 λ°λ³΅λ§λ€ μ΅λ ν λ²μ κ΅ν μ°μ°λ§ μ¬μ©
μ
λ ₯ μμ 1
7 β¦ n
3 73 48 31 8 11 20
μΆλ ₯ μμ 1
β‘3 8 11 20 31 48 73 β¦ μ λ ¬ κ²°κ³Ό
μ
λ ₯ μμ 2
8 β¦ n
73 65 48 31 29 20 8 3
μΆλ ₯ μμ 2
β‘3 8 20 29 31 48 65 73 β¦ μ λ ¬ κ²°κ³Ό
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void inPlaceInsertionSort(int *A, int n) {
int j, save, tmp = 0;
for (int i = 1; i <= n-1; i++) {
save = A[i];
j = i - 1;
while ((j >= 0) && (A[j] > save)) {
A[j + 1] = A[j];
j -= 1;
}
A[j + 1] = save;
}
}
int main() {
int n;
int* A;
scanf("%d", &n);
A = (int*)malloc(sizeof(int) * n);
if (A == NULL) {
printf("Not enough memory!");
return -1;
}
for (int i = 0; i < n; i++) {
scanf("%d", &A[i]);
getchar();
}
inPlaceInsertionSort(A, n);
for (int i = 0; i < n; i++) {
printf(" %d", A[i]);
}
free(A);
return 0;
}
'Programming > μκ³ λ¦¬μ¦' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μ¬μ ] μ΄μ§νμ(μ¬κ·, λΉμ¬κ·, μ«μλ§μΆκΈ°) (0) | 2021.10.20 |
---|---|
[ν΅ μ λ ¬] λ°°μ΄μ μ΄μ©ν ν΅ μ λ ¬ ꡬν (0) | 2021.10.19 |
[ν©λ³ μ λ ¬] λ¨μΌμ°κ²°λ¦¬μ€νΈλ₯Ό μ΄μ©ν ν©λ³μ λ ¬ ꡬν (0) | 2021.10.19 |
[νκ³Ό νμ λ ¬] ν μ λ ¬ (μμ°¨ν, μ΅λν) (0) | 2021.09.29 |
[νκ³Ό νμ λ ¬] ν μμ± (μμ°¨ν, μ΅λν) (0) | 2021.09.29 |
- Total
- Today
- Yesterday
- κΈ°μ 컨νΌλ°μ€
- μ½ν
- ν ν¬μλ°
- νλ‘κ·Έλλ¨Έμ€
- WGAN
- CμΈμ΄
- ꡬκΈμ½λ©
- AIRUSH
- λ Όλ¬Έλ¦¬λ·°
- AIRUSH2023
- νμ΄μ¬μ½ν
- μ½ν μ€λΉ
- νμ΄μ¬
- CLOVAX
- AI컨νΌλ°μ€
- gan
- μ€ν μ΄λΈλν¨μ
- SKTECHSUMMIT
- dreambooth
- Aimers
- lgaimers
- HyperCLOVA
- SQL
- DALLE
- StableDiffusion
- λ Όλ¬Έμ½κΈ°
- MYSQL
- μ½λ©μλ¬
- λλ¦ΌλΆμ€
- μ½λ©κ³΅λΆ
μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |