1-N까지의 배열이 존재 / 다음의 배열을 오름차순으로정렬
선택정렬
1 - N까지 loop를 돌면서 최솟값의 idx를 찾아 스왑하는 방식
// 선택정렬 : 배열 갯수의 -1 횟수를 돌며 최솟값을 찾아서 스왑하는 방식
for (int i = 0; i < N-1; i++) {
int idx = i;
for (int j = i+1; j < N; j++) {
if (arr[j] < arr[idx]){
idx = j;
}
}
int temp = arr[i];
arr[i] = arr[idx];
arr[idx] = temp;
}
버블정렬
근접한 수와의 반복적인 비교를 통하여 스왑하여 정렬하는 방식
// 버블정렬 : 근접한 수와의 반복적인 비교
int temp = 0;
for (int i = 0; i < N-1; i++) {
for (int j = 0; j < N-i-1; j++) {
if (arr[j] > arr[j+1]){
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
삽입정렬
정렬되지 않은 부분의 값을 하나씩 꺼내어 정렬된 부분에 알맞은 위치에 삽입하는 방식
// 삽입정렬
for (int i = 1; i < N; i++) {
int temp = arr[i];
int j;
for (j = i-1; j >= 0; j--) {
if (arr[j] > temp){
arr[j+1] = arr[j];
} else {
break;
}
}
arr[j+1] = temp;
}
'알고리즘' 카테고리의 다른 글
구간합(Prefix Sum) 알고리즘 (0) | 2024.11.13 |
---|---|
Two Pointers 알고리즘 (1) | 2024.11.13 |