2016-05-28 2 views
1

Я реализовал алгоритм двоичного поиска с использованием Node.js. Я записываю время, затраченное алгоритмом на поиск числа в случайном сгенерированном массиве. Я могу вывести время, затраченное на алгоритм для безуспешный поиск.Время выполнения для успешного поиска Алгоритм бинарного поиска

Но я не могу понять, как измерить время, затрачиваемое алгоритмом на успешно поиск число в массиве.

Вот мой код -

function binarySearch(A,K) 
{ 
    var l = 0; // min 
    var r = A.length - 1; //max 
    var n = A.length; 
    var time = process.hrtime(); 

    while(l <= r) 
    { 
     var m = Math.floor((l + r)/2); 

     if(K == A[m]) 
     { 
      return m; 
     } 
     else if(K < A[m]) 
     { 
      r = m - 1; 
     } 
     else 
     { 
      l = m + 1; 
     } 
    } 
    time = process.hrtime(time); 
    console.log('%d',time[1]/1000000); 
    return -1; 
} 

var randomlyGenerateArray = function(size) 
{ 
    var array = []; 
    for (var i = 0; i < size; i++) 
    { 
     var temp = Math.floor(Math.random() * maxArrayValue); 
     array.push(temp); 
    } 
    return array; 
} 

var sortNumber = function(a, b) 
{ 
    return a - b; 
} 

var program = function() 
{ 
    for (var i = 0; i <= 10000; i += 10) 
    { 
     var randomArray = randomlyGenerateArray(i); 
     var sort = randomArray.sort(sortNumber); 
     var randomKey = 100; 
     var result = binarySearch(sort, randomKey); 
     if(result < 0) 
     { 
      console.log("Element not found"); 
     } 
     else 
     { 
      console.log('Element found in position ',result); 
     } 
    } 
} 

var maxArrayValue = 1000; 

program(); 

Я использую var time = process.hrtime(); для запуска таймера в начале алгоритма и использования time = process.hrtime(time); для завершения таймера и выводит его в консоли.

Как можно измерить время, затрачиваемое алгоритмом на успешно поиск число в массиве.

Любая помощь была бы принята с благодарностью.

+1

Просто скопируйте те же две строки которые перед «возвратом -1» перед передним «возвратом» в функции. – Pointy

+0

@Pointy Спасибо :) Это работает :) – Dazzler

ответ

1

Запустить таймер перед вызовом функции двоичного поиска и закончить его после вызова .. независимо от того, является ли успешным поиск или нет, вы получите время ..

var time = process.hrtime(); 
var result = binarySearch(sort, randomKey); 
time = process.hrtime(time); 
...... 
+0

Спасибо, это имеет смысл :) – Dazzler