2010-04-25 4 views
0

http://en.wikipedia.org/wiki/Binary_search_algorithm#Average_performanceСредняя производительность алгоритма бинарного поиска?

BinarySearch(int A[], int value, int low, int high) 
{ 
    int mid; 
    if (high < low) 
     return -1; 
    mid = (low + high)/2; 
    if (A[mid] > value) 
     return BinarySearch(A, value, low, mid-1); 
    else if (A[mid] < value) 
     return BinarySearch(A, value, mid+1, high); 
    else 
     return mid; 
} 

Если число я пытаюсь найти всегда в массиве, может кто-нибудь помочь мне написать программу, которая может вычислить среднюю производительность алгоритма двоичного поиска?

Редактировать: Я знаю, что могу сделать это, фактически запустив программу и подсчитав количество вызовов, но то, что я пытаюсь сделать здесь, - это сделать это, не вызывая функцию.

edit2: KennyTM: Это временная сложность, я пытаюсь рассчитать среднее количество вызовов. Например, среднее число вызовов для поиска целого числа в A [2] было бы равно 1,67 (5/3)

+2

Если вы являетесь «passonate» (вы можете проверить правописание), вы, вероятно, уже написали какой-то код, чтобы сделать это - поделитесь им с нами. – 2010-04-25 16:58:21

+0

O (log n). _____ – kennytm

+0

O - «наихудший случай», а не «средний случай». – Mavrik

ответ

0

Вам не нужна «программа». Вы можете просто подсчитать количество вызовов метода BinarySearch.

Вы можете сделать это легко, передав другой параметр (по указателю) или используя глобальную переменную. В этом случае - это игрушка, поэтому я, вероятно, буду быстро и грязно с глобальным.

+1

Это 2. Что я выиграю? –

+0

@Jurily: hehe, нет ссылки на instantrimshot.com? :) – Stephen

Смежные вопросы