더북(TheBook)

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)입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.