成功搜索的执行时间二进制搜索算法

时间:2016-05-28 13:03:58

标签: javascript arrays node.js algorithm binary-search

我使用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 个答案:

答案 0 :(得分:1)

在调用二进制搜索功能之前启动计时器并在通话结束后结束..无论搜索是否成功,您都会得到时间..

@XmlRootElement
public enum Privilege {
    READ,
    WRITE;
}