[문제1]
##이진탐색_순차자료(배열)_노트 :
이론 : 시간복잡도 : O(logN)
##코드 :
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
#include <stdio.h>
#include <stdlib.h>
#pragma warning (disable : 4996)
int* A = NULL;
int result = -1;
void BinarySearch(int* A, int start, int end, int key)
{
//1_ 종료조건★ start > end
if (start > end)return;
//2_ mid인덱스 저장
int mid = (start + end) / 2;
//3_A[mid]와 key 비교
if (A[mid] == key)
{
result = mid;
return;
}
else if (A[mid]>key)//key는 왼쪽 구간에 위치
{
BinarySearch(A, start, mid - 1, key);
}
else {
result = mid; //★ 현재 mid가 key보다 작으므로 잠정적으로 결과 저장
BinarySearch(A, mid+1, end, key);
}
}
int main()
{
int N,Key;
scanf("%d %d", &N,&Key);
A = (int*)malloc(sizeof(int) * N);
//오름차순으로 입력
for (int i = 0; i < N; i++) scanf("%d", &A[i]);
BinarySearch(A, 0, N - 1, Key);
printf(" %d", result);
free(A);
return 0;
}
|
cs |
'알고리즘(C언어) > 알고리즘 및 실습 강의' 카테고리의 다른 글
(8)실습6주차_이진탐색+순차자료_[문제3](작성중) (0) | 2024.09.11 |
---|---|
(7)실습6주차_이진탐색+순차자료_[문제2] (1) | 2024.09.10 |
(5)실습5주차_합병정렬과 퀵정렬 (0) | 2024.09.05 |
(4)실습4주차_힙과 힙정렬(2)_1_문제1번,문제2번 (0) | 2024.09.05 |
(4)실습3주차_힙과 힙정렬(1)_2_문제2번 (0) | 2024.09.02 |