diff --git a/src/util/_impl/_bsearch_impl.scad b/src/util/_impl/_bsearch_impl.scad new file mode 100644 index 00000000..7e1e6d79 --- /dev/null +++ b/src/util/_impl/_bsearch_impl.scad @@ -0,0 +1,7 @@ +use ; + +function _binary_search(sorted, elem, low, upper) = + low > upper ? -1 : + let(mid = floor((low + upper) / 2)) + lessThan(sorted[mid], elem) ? _binary_search(sorted, elem, mid + 1, upper) : + greaterThan(sorted[mid], elem) ? _binary_search(sorted, elem, low, mid - 1) : mid; \ No newline at end of file diff --git a/src/util/bsearch.scad b/src/util/bsearch.scad index 68c0f436..893210bd 100644 --- a/src/util/bsearch.scad +++ b/src/util/bsearch.scad @@ -1,10 +1,4 @@ -use ; - -function _binary_search(sorted, elem, low, upper) = - low > upper ? -1 : - let(mid = floor((low + upper) / 2)) - lessThan(sorted[mid], elem) ? _binary_search(sorted, elem, mid + 1, upper) : - greaterThan(sorted[mid], elem) ? _binary_search(sorted, elem, low, mid - 1) : mid; +use ; // for example, `sorted` is by zyx function bsearch(sorted, elem) = _binary_search(sorted, elem, 0, len(sorted) - 1); \ No newline at end of file