1.5.10 최대-최소 배열
문제 1-10 주어진 정렬된 배열을 최대-최소 형태로 재배열하세요.
예시
입력 [1, 2, 3, 4, 5, 6, 7]
출력 [7, 1, 6, 2, 5, 3, 4]
첫 번째 해결책 보조 배열로 입력 배열의 복사본을 만듭니다. 입력 배열을 처음부터 끝까지 순회하며 값들을 보조 배열에 번갈아 넣습니다.
해결책 1-10-1
void MaxMinArr(int arr[], int size) { int *aux = (int *)malloc(size * sizeof(int)); for (int i = 0; i < size; i++) { aux[i] = arr[i]; } int start = 0; int stop = size - 1; for (int i = 0; i < size; i++) { if (i % 2 == 0) { arr[i] = aux[stop]; stop -= 1; } else { arr[i] = aux[start]; start += 1; } } }
분석 시간 복잡도는 O(n)이며, 공간 복잡도는 O(n)입니다.