algorithm/Algorithm-Core

Lower Bound

아르비스 2017. 5. 20. 07:04
int lower_bound(int arr[], int target, int size) {
    int mid, start, end;
    start = 0, end = size-1;
    while (end > start) // end가 start보다 같거나 작아지면, 그 값이 Lower Bound이므로 반복을 종료한다.
    {
        mid = (start + end) / 2;
        if (arr[mid] >= target) // 중간값이 원하는 값보다 크거나 같을 경우, 끝값을 중간값으로 설정하여 다시 탐색한다.
            end = mid;
        else start = mid + 1; // 중간값이 원하는 값보다 작을 경우, 시작값을 중간값+1로 설정하여 다시 탐색한다.
    }
    return end;
}