작성
·
218
0
void swap(char* xp, char* yp);
void printStringArray(char* arr[], int size);
void selectionSort(char* arr[], int n);
int main()
{
char* arr[] = { "Cherry", "AppleBee", "Pineapple", "Apple", "Orange" };
int n = sizeof(arr) / sizeof(arr[0]);
printStringArray(arr, n);
selectionSort(arr, n);
printStringArray(arr, n);
return 0;
}
void selectionSort(char* arr[], int n)
{
int min_idx = 0;
for (int i = 0; i < n - 1; i++)
{
min_idx = i;
for (int j = i + 1; j < n; j++)
{
if (strcmp(arr[min_idx], arr[j]) > 0)
{
min_idx = j;
}
}
swap(arr[min_idx], arr[i]);
}
}
void printStringArray(char* arr[], int size)
{
for (int i = 0; i < size; i++)
printf("%s\n", arr[i]);
printf("\n");
}
void swap(char* xp, char* yp)
{
char* temp = xp;
xp = yp;
yp = temp;
}
디버거로 찍어보니 주소 swap이 되는데 막상 값은 바뀌지 않네요... 그리고 이중포인터는 포인터의 주소를 갖는 변수라는 개념은 이해하겠는데 사용하려니 어렵습니다. 교수님 코드에서도 이중포인터를 사용한 이유를 잘 이해 못하겠는데 어찌해야할까요