기초적이지만 그래도 정리...
파이썬
# -*- encoding: cp949 -*- def binary_search(l, data): low,high = 0,len(l) while low<high: bl,bh = low,high mid = (low+high)/2 if l[mid] == data: return True elif l[mid] > data: high = mid else: low = mid if bl==low and bh==high: return False return False a=sorted(map(int,raw_input().split())) print binary_search(a, input())
C++
#include <iostream> #include <cstdio> #include <vector> #include <cmath> #include <algorithm> #include <iomanip> #include <string> using namespace std; bool binary_search(int l[100], int data) { int low = 0,high = 100; while(low < high) { int bl = low, bh = high; int mid = (low+high)/2; if(l[mid]==data) return true; else if(l[mid] > data) high = mid; else low = mid; if(bl==low && bh==high) return false; } return false; } int main() { int a[100], input; scanf("%d",&input); for(int i=0;i<100;i++) //0~99 a[i] = i; cout<<binary_search(a,input)<<"\n"; return 0; }
'algorithm > theory' 카테고리의 다른 글
확률적 자료구조를 이용한 추측 - hyperloglog (0) | 2017.04.26 |
---|---|
각종 자료구조, 정렬의 시간복잡도. (0) | 2016.11.15 |
(미완)동적 계획법(다이나믹 프로그래밍, DP). 2 (0) | 2016.11.03 |
배낭(Knapsack) 알고리즘 (DP) (0) | 2016.10.30 |
Manacher's Algorithm (0) | 2016.10.23 |