2024/3/28 TIL
'오늘의 일에서 나는 어떤 것을 배웠는지' - 학습
Q16. 선택 정렬과 버블 정렬에 대해 설명해주시고, 코드를 작성해보세요.
A16.
선택 정렬(Selection Sort)과 버블 정렬(Bubble Sort)은 간단한 정렬 알고리즘으로,
주어진 배열을 정렬하는 데에 사용된다. 이러한 정렬 알고리즘들은 각각의 방식에 따라 동작하며, 각각의 장단점이 있다.
선택 정렬(Selection Sort)
선택 정렬은 배열을 정렬하는 간단한 알고리즘 중 하나이다.
정렬되지 않은 부분 중에서 가장 작은 값을 찾아 정렬된 부분의 뒤로 이동시키는 방식으로 동작한다.
선택 정렬의 시간 복잡도는 O(n^2)입니다.
주어진 배열에서 가장 작은 값을 찾는다.
찾은 가장 작은 값을 현재 정렬된 부분의 끝에 위치한 값과 교환한다.
정렬된 부분의 크기를 하나씩 늘려가며 위의 과정을 반복한다.
버블 정렬(Bubble Sort)
버블 정렬은 인접한 두 원소를 비교하여 순서가 잘못된 경우 서로 위치를 교환하는 방식으로 동작한다.
버블 정렬의 시간 복잡도 역시 O(n^2)입니다.
주어진 배열에서 인접한 두 원소를 비교한다.
만약 순서가 잘못된 경우 두 원소를 교환한다.
배열의 끝까지 위의 과정을 반복한다.
위의 과정을 배열의 크기만큼 반복하며 정렬을 완료한다.
선택 정렬
#include <stdio.h>
void selectionSort(int arr[], int n) {
int i, j, min_idx;
for (i = 0; i < n-1; i++) {
min_idx = i;
for (j = i+1; j < n; j++) {
if (arr[j] < arr[min_idx])
min_idx = j;
}
// 현재 인덱스 i와 최소값을 교환
int temp = arr[min_idx];
arr[min_idx] = arr[i];
arr[i] = temp;
}
}
int main() {
int arr[] = {64, 25, 12, 22, 11};
int n = sizeof(arr)/sizeof(arr[0]);
selectionSort(arr, n);
printf("Sorted array: \n");
for (int i=0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
return 0;
}
버블 정렬
#include <stdio.h>
void bubbleSort(int arr[], int n) {
int i, j;
for (i = 0; i < n-1; i++) {
for (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;
}
}
}
}
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr)/sizeof(arr[0]);
bubbleSort(arr, n);
printf("Sorted array: \n");
for (int i=0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
return 0;
}
'오늘의 나는 무엇을 잘했는지' - 성취
대분류 : 최종 팀 프로젝트 - 클라이언트 구현
소분류 : 캐릭터 기본 캐릭터 초안 설계 및 기획
이런 걸 만들고 있습니다..
'오늘의 나는 어떤 문제를 겪었는지, 앞으로 어떻게 해결할 것인지' - 개선
기획 - 특성 부분에서 생각했던 것이 메인 기획자의 생각과 약간 달라서 수정에 들어갈 필요가 있다.
다음부터는 작업에 들어가기 전에 좀 더 꼼꼼하게 생각을 나눠봐야겠다.