⚙️ 알고리즘/기타 문제 & 풀이

[C] 순환을 이용한 배열에서 최대값 찾기

dev_zoe 2020. 7. 23. 15:48
반응형
#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이 반환되는 과정

 

반응형