Рубрики

Алгоритмы | Поиск | Вопрос 6

В приведенном выше вопросе исправление, необходимое для правильной работы программы (GATE CS 2008)
(A) Измените строку 6 на: if (Y [k] <x) i = k + 1; иначе j = k-1;
(B) Измените строку 6 на: if (Y [k] <x) i = k — 1; иначе j = k + 1;
(C) Измените строку 6 на: if (Y [k] <= x) i = k; иначе j = k;
(D) Измените строку 7 на:} while ((Y [k] == x) && (i <j));

Ответ: (А)
Пояснение: ниже исправлена функция

f(int Y[10], int x) {

   int i, j, k;

   i = 0; j = 9;

   do {

           k =  (i + j) /2;

           if( Y[k] < x)  i = k + 1; else j = k - 1;

       } while(Y[k] != x && i < j);

   if(Y[k] == x) printf ("x is in the array ") ;

   else printf (" x is not in the array ") ;

}

Ссылка: http://en.wikipedia.org/wiki/Binary_search_algorithm#Implementations
Тест на этот вопрос

Рекомендуемые посты:

Алгоритмы | Поиск | Вопрос 6

0.00 (0%) 0 votes