본문 바로가기

PROGRAMMING LANGUAGE/C++

이진탐색

#include <iostream>
#define ITEM_SIZE 10
using namespace std;

void print_arr(int a[], int size) {
    for (int i = 0; i < size; i++) {
        cout << a[i] << ' ';
    }
    cout << '\n';
}

void SelectionSort(int* arr, int size)
{
    int min, indexMin, temp;
    for (int i = 0; i < size - 1; i++)
    {
        indexMin = i;
        for (int j = i + 1; j < size; j++) {
            if (arr[j] < arr[indexMin]) {
                indexMin = j;   //select
            }
        }
        temp = arr[indexMin];
        arr[indexMin] = arr[i];
        arr[i] = temp;
    }
}

int BinarySearch(int* arr, int first, int last, int target)
{
    int mid;
    if (first > last)
        return -1;
    mid = (first + last) / 2;  
    
    if (arr[mid] == target)
        return mid;
    else if (target < arr[mid])
        return BinarySearch(arr, first, mid - 1, target);
    else
        return BinarySearch(arr, mid + 1, last, target);
}

int main() {
    int arr[] = { 4,2,5,8,3,10,6,8,20,11 };

    SelectionSort(arr, 10);
    print_arr(arr, 10);

    int value = 8;
    cout << "탐색값 : " << value << endl;

    int idx = BinarySearch(arr, 0, 9, 8);
    if (idx == -1)
        cout << "탐색 실패" << endl;
    else
        cout << "탐색 위치 :" << "arr[" << idx << "]" << endl;

    return 0;
}

'PROGRAMMING LANGUAGE > C++' 카테고리의 다른 글

std::map  (0) 2021.12.24
그래프 알고리즘 (bfs,dfs)  (0) 2021.12.17
set 사용하기  (0) 2021.12.09
map 사용하기  (0) 2021.12.09
list 사용해보기  (0) 2021.12.09