BVB Source Codes

Algorithm-Implementations Show binary_search.js Source code

Return Download Algorithm-Implementations: download binary_search.js Source code - Download Algorithm-Implementations Source code - Type:.js
  1. /*
  2.  * Index Oriented Binary Search
  3.  * @author Jared Halpert (ghostsnstuff)
  4.  * @params: sorted list, startIndex, stopIndex, and value to be located
  5.  * @edge cases: list emtpy, startIndex > stopIndex, value exceeds range of list values
  6.  * @logic
  7.  * update middle
  8.  * return middle index if value found
  9.  * recursive BinarySearch call, value < list[middle], reduce content to lower half of the list (adjust stopIndex)
  10.  * recursive BinarySearch call, value > list[middle], reduce content to upper half of the list (adjust startIndex)
  11.  * @description: http://en.wikipedia.org/wiki/Binary_search_algorithm
  12.  */
  13. function BinarySearch(list, startIndex, stopIndex, value) {
  14.  
  15.         if(list.length === 0) return 'list empty';
  16.         if(startIndex > stopIndex) return 'startIndex > stopIndex';
  17.         if((value < list[startIndex]) || (value > list[stopIndex])) return 'value out of bounds';
  18.  
  19.         var middle = Math.floor((startIndex + stopIndex)/2);
  20.         if(list[middle] === value) return middle;
  21.         else if(list[middle] > value) return BinarySearch(list, startIndex, middle - 1, value);
  22.         else return BinarySearch(list, middle + 1, stopIndex, value);
  23.  
  24. }
  25.  
  26. // test
  27. var data = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
  28. var value = 7;
  29. console.log(data);
  30. console.log('find ' + value);
  31. console.log('data[' + BinarySearch(data, 0, data.length-1, value) + '] = '+value);
downloadbinary_search.js Source code - Download Algorithm-Implementations Source code
Related Source Codes/Software:
raty - 2017-04-22
RDVTabBarController - Highly customizable tabBar and tabBarController fo... 2017-04-22
material-icon-lib - Library containing over 1500 material vector icons... 2017-04-21
httpdiff - Perform the same request against two HTTP servers ... 2017-04-21
jquerytools - The missing UI library for the Web ... 2017-04-21
mcrouter - Mcrouter is a memcached protocol router for scalin... 2017-04-22
dynomite - A generic dynamo implementation for different k-v ... 2017-04-22
kityminder - Baidu brain figure 2017-04-22
llvm - Mirror of official llvm git repository located at ... 2017-04-22
RBBAnimation - Block-based animations made easy, comes with easin... 2017-04-22
ied - 2017-04-29
Nimble - A Matcher Framework for Swift and Objective-C 2017-04-29
MHVideoPhotoGallery - A Photo and Video Gallery 2017-04-29
shoulda-matchers - Collection of testing matchers extracted from Shou... 2017-04-29
Android-SlideExpandableListView - A better ExpandableListView, with animated expanda... 2017-04-29
AppSales-Mobile - App Sales allows iPhone and Mac App Store develope... 2017-04-29
react-templates - Light weight templates for react ... 2017-04-28
afterglow-theme - A minimal dark Theme for Sublime Text 2 and 3 2017-04-28
jwt-go - Golang implementation of JSON Web Tokens (JWT) 2017-04-28
DeerResume - Tool MarkDown online resume, online preview, edit,... 2017-04-28

 Back to top