카테고리 없음
[홍정모의 따배씨] 선택 정렬 알고리즘 후기
newbeverse
2024. 6. 4. 23:06
홍정모 교수님이 내주신 문제는 선택정렬 알고리즘이다.
오름차순으로 숫자를 정렬하는게 목적이고, 코드는 아래와 같다.
결론적으로 문제풀이에 성공해서 정말 뿌듯하다.
다만 교수님과 다른 부분이였고, 이제와서 보이게 된건
배열의 원소가 5개면 배열은 arr[4] 까지이다.
arr[0] = 1; arr[1] = 2 arr[2] = 3 arr[3] = 3 arr[4] = 4
그러나 배열의 끝을 알리기위해 '\0' 문자열이 들어가므로,
arr[0] = 1; arr[1] = 2 arr[2] = 3 arr[3] = 3 arr[4] = 4 arr[5] = '\0' 이된다.
아주 기초중에 기초상식이니 헷갈린다면 꼭 다시 공부해보자
다음은 주소 표현법이다.
int arr[] 에서 arr[] = &arr[0] 이다.
arr[] 자체가 주소임라는 것은 알고있던 사실인데도 불구하고, int *arr[] 이아닌, int arr[] 이라는 사실이 헷갈리게 만든다.
이 chatgpt의 답변을 이해하면 이유가 명쾌하게 이해가 된다.
int arr[] 의 예
int arr[] = {1, 2, 3, 4, 5};
int* arr[] 의 예
int a = 1, b = 2, c = 3;
int *arr[] = {&a, &b, &c}; // Array of pointers to integers
int size = sizeof(arr) / sizeof(arr[0]);
#include <stdio.h>
void swap(int* xp, int* yp);
void printArray(int arr[], int size);
void selectionSort(int arr[], int n);
int main(void)
{
int arr[] = { 65,0 ,323,3,32,3,3,32,24, 12, 22, 11, 232};
int n = sizeof(arr) / sizeof(arr[0]);
selectionSort(arr, n);
printArray(arr, n);
return 1;
}
void selectionSort(int arr[], int n)
{
int max_idx = *arr;
for (int i = 0; i < n; i++)
{
for (int i = 0; i < n - 1; i++)
{
if (arr[i] > arr[i + 1])
{
max_idx = i;
swap(arr + i, arr + i + 1);
}
}
}
}
void swap(int* xp, int* yp)
{
int temp;
temp = *xp;
*xp = *yp;
*yp = temp;
}
void printArray(int arr[], int size)
{
for (int i = 0; i < size; i++)
{
printf("%d ", arr[i]);
}
}
반응형