Vienna
5일차 (1) 본문
Q7. 요소의 교환 과정을 자세하게 출력할 수 있도록 단순 선택 정렬 프로그램을 수정하세요. 오른쪽처럼 정렬하지 않은 부분의 첫 번째 요소 위에는 기호 *를, 정렬하지 않은 부분의 가장 작은 값의 요소 위에는 기호 +를 출력하세요.
내 답변:
void insertion(int a[], int n) {
for (int i = 0; i<n-1 ; i++) {
int min = i;
for (int j = i; j < n; j++)
if (a[j] < a[min])
min = j;
for (int j = 0; j < n; j++)
printf("%3c", j == i ? '*' : j == min ? '+' : ' ');
putchar('\n');
for (int j = 0; j < n; j++)
printf("%3d", a[j]);
putchar('\n');
swap(int, a[i], a[min]);
}
putchar('\n');
for (int j = 0; j < n; j++)
printf("%3d", a[j]);
putchar('\n');
}
정답:
내 답변과 크게 다르지 않은 것 같다. 차이가 있다면
- 나: printf("%3c", j == i ? '*' : j == min ? '+' : ' ');
- 답변: printf((m == i) ? " * " : (m == min) ? " + " : " ");
이 부분 정도. 하지만 크게 결은 다르지 않다...
///*--- 단순 선택 정렬(정렬 과정 출력)---*/
//void selection(int a[], int n)
//{
// int i, j, m;
//
// for (i = 0; i < n - 1; i++) {
// int min = i;
// for (j = i + 1; j < n; j++)
// if (a[j] < a[min])
// min = j;
// for (m = 0; m < n; m++)
// printf((m == i) ? " * " : (m == min) ? " + " : " ");
// putchar('\n');
//
// for (m = 0; m < n; m++)
// printf("%3d ", a[m]);
// putchar('\n');
//
// swap(int, a[i], a[min]);
// }
// putchar('\n');
// for (m = 0; m < n; m++)
// printf("%3d ", a[m]);
// putchar('\n');
//}
//
'알고리즘 문제 풀이 > Do It! 자료구조와 함께 배우는 알고리즘 입문 C언어 편' 카테고리의 다른 글
5일차 (3) (0) | 2021.11.23 |
---|---|
5일차 (2) (0) | 2021.11.23 |
4일차 (4) (0) | 2021.11.22 |
4일차 (3) (0) | 2021.11.22 |
4일차 (2) (0) | 2021.11.22 |
Comments