1.5.6 배열로 파형 그리기
문제 1-6 주어진 배열을 홀수 인덱스 원소가 인접한 짝수 인덱스 원소보다 작아지는 파형(wave form)이 되게 배열하십시오.
첫 번째 해결책 짝수 인덱스 값과 인접한 홀수 인덱스 값을 비교해 홀수 인덱스가 짝수 인덱스보다 작지 않으면 서로 바꿉니다(swap).
해결책 1-6-1
void WaveArray2(int arr[], int size) { /* 홀수 인덱스는 짝수 인덱스보다 작다. */ for (int i = 1; i < size; i+= 2) { if ((i - 1) >= 0 && arr[i] > arr[i - 1]) { swap(arr, i, i - 1); } if ((i + 1) < size && arr[i] > arr[i + 1]) { swap(arr, i, i + 1); } } } /* 테스트 코드 */ int main() { int arr[] = { 8, 1, 2, 3, 4, 5, 6, 4, 2 }; int size = size = sizeof(arr) / sizeof(int); WaveArray2(arr, size); printArray(arr, size); return 0; }
분석 시간 복잡도는 O(n)입니다.