반응형
#include <stdio.h>
int max(int list[], int low, int high) { //순환
int middle;
int max_left, max_right;
if (low == high)
return list[low]; //절반으로 나눈 끝에 low=high이면 자기 자신 반환
middle = (low + high) / 2;
max_left = max(list, low, middle); //중앙에서 왼쪽 부분의 최대값
max_right = max(list, middle + 1, high); //중앙에서 오른쪽 부분의 최대값
return max_left >= max_right ? max_left : max_right; //조건 연산자 사용하여 왼쪽의 최대값과 오른쪽의 최대값을 비교하여 더 큰것을 반환한다.
}
int main(void)
{
int list[] = { 10, 20, 100, 4, 5, 45, 3, 99, 11, 22 };
printf("가장 큰 수는 %d\n", max(list, 0, 9)); // 100
printf("가장 큰 수는 %d\n", max(list, 5, 9)); // 99
printf("가장 큰 수는 %d\n", max(list, 3, 6)); // 45
}
위 리스트에서 low를 0으로, high를 9로 지정했을 때 값이 100이 반환되는 과정
반응형
'⚙️ 알고리즘 > 기타 문제 & 풀이' 카테고리의 다른 글
[C] 조합, 순열, 중복조합, 중복순열 (0) | 2020.08.04 |
---|---|
[C] 퀵정렬을 이용한 몇 번째 작은수 (0) | 2020.08.01 |
[C] 사이클 길이(순환) (0) | 2020.07.23 |
[C] 하노이탑(the tower of hanoi) 재귀 (2) | 2020.07.23 |
[C] 문자열을 입력받아 첫 번째로 등장하는 단어 출력 (0) | 2020.07.18 |