Страницы

Translate

вторник, 6 августа 2013 г.

Упражнение 3.1.Напишите программу binsearch(), предусмотрев в ней одну проверку внутри цикла.

Упражнение 3.1. В нашей программе бинарного поиска внутри цикла осуществляются две проверки, хотя могла быть только одна (при увеличении числа проверок вне цикла). Напишите программу, предусмотрев в ней одну проверку внутри цикла. Оцените разницу во времени выполнения.

#include <stdio.h>


int binsearch(int x, int v[], int n);

int main()
{
    int x;
    
    x = 8;
    int v[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    printf("%d\n", binsearch(x, v, 10));
    return 0;
}
    

/*binsearch()*/
int binsearch(int x, int v[], int n)
{
    int low, high, mid;
    
    low = 0;
    high = n - 1;
    mid = (low+high)/2;
    while(low<=high && x != v[mid])
    {
        if(x < v[mid])
            high = mid - 1;
        else if(x > v[mid])
            low = mid + 1;
        mid = (low + high)/2;
    }
    if(x==v[mid])//совпадение найдено
        return mid;
    else
        return -1;//нет совпадений
}

Результат:




Комментариев нет:

Отправить комментарий