본문 바로가기
알고리즘(C언어)/알고리즘 및 실습 강의

(6)실습6주차_이진탐색+순차자료_[문제1]

by 코잼민 2024. 9. 10.

알고리즘_6주차.pdf
0.10MB

[문제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 endint 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+1end, 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