Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- mysql
- Docker
- paramiko
- VS Code
- C++
- JSON
- label
- Python
- C
- 기타 연주
- 오류
- Numpy
- ubuntu
- Visual Studio
- 컨테이너
- 프로그래머스
- SSH
- C#
- pytorch
- 핑거스타일
- LIST
- pandas
- Selenium
- pip
- Linux
- OpenCV
- windows forms
- error
- 채보
- YOLO
Archives
- Today
- Total
기계는 거짓말하지 않는다
배열 최댓값, 최솟값 찾기 (분할 정복, Divide and Conquer) 본문
배열에서 분할 정복을 이용하여 최댓값을 찾는 예시이다.
배열을 왼쪽, 오른쪽 반씩 나누고 왼쪽 반에서 최댓값을 재귀적으로 찾는다.
오른쪽도 마찬가지 방법으로 반복한다.
이렇게 왼쪽, 오른쪽에서 찾은 최댓값을 비교하여 더 큰 값을 최댓값으로 설정한다.
최솟값 찾기는 부호의 방향만 바꾸어주면 된다.
#include <stdio.h>
int find_max_index(int arr[], int left, int right) {
if (left == right) // 배열 길이 1
return left;
int mid = (left + right) / 2;
int left_max_index, right_max_index;
left_max_index = find_max_index(arr, left, mid);
right_max_index = find_max_index(arr, mid + 1, right);
// 더 큰 값의 인덱스를 return
return arr[left_max_index] > arr[right_max_index] ? left_max_index : right_max_index;
}
int main() {
int arr[] = {50, 20, 10, 5, 1, 25, 40, 100, 3, 15, 60, 70};
int max_index = find_max_index(arr, 0, (sizeof(arr) / sizeof(int)) - 1);
printf("Max Index: %d, Max Value: %d\n", max_index, arr[max_index]);
}
'C' 카테고리의 다른 글
C 디렉터리 소유권 변경, chown 함수 (0) | 2024.07.18 |
---|---|
libcurl curl_easy_perform() failed: SSL peer certificate or SSH remote key was not OK 오류 (0) | 2023.05.27 |
C 파일 존재 여부, File Exist Check (0) | 2022.05.13 |
병합 정렬(Merge Sort) (0) | 2021.10.20 |
이진 검색 트리(Binary Search Tree) (0) | 2021.10.06 |
Comments