mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-01 20:40:28 +02:00
refactor
This commit is contained in:
@@ -3,11 +3,13 @@ use <_vt_default_comparator.scad>;
|
|||||||
function _bsearch_vt(sorted, elem, low, upper) =
|
function _bsearch_vt(sorted, elem, low, upper) =
|
||||||
low > upper ? -1 :
|
low > upper ? -1 :
|
||||||
let(mid = floor((low + upper) / 2))
|
let(mid = floor((low + upper) / 2))
|
||||||
lessThan(sorted[mid], elem) ? _bsearch_vt(sorted, elem, mid + 1, upper) :
|
sorted[mid] == elem ? mid :
|
||||||
greaterThan(sorted[mid], elem) ? _bsearch_vt(sorted, elem, low, mid - 1) : mid;
|
let(lu = lessThan(sorted[mid], elem) ? [mid + 1, upper] : [low, mid - 1])
|
||||||
|
_bsearch_vt(sorted, elem, lu[0], lu[1]);
|
||||||
|
|
||||||
function _bsearch_cmp(sorted, cmp, low, upper) =
|
function _bsearch_cmp(sorted, cmp, low, upper) =
|
||||||
low > upper ? -1 :
|
low > upper ? -1 :
|
||||||
let(mid = floor((low + upper) / 2))
|
let(mid = floor((low + upper) / 2), compared = cmp(sorted[mid]))
|
||||||
cmp(sorted[mid]) < 0 ? _bsearch_cmp(sorted, cmp, mid + 1, upper) :
|
compared == 0 ? mid :
|
||||||
cmp(sorted[mid]) > 0 ? _bsearch_cmp(sorted, cmp, low, mid - 1) : mid;
|
let(lu = compared < 0 ? [mid + 1, upper] : [low, mid - 1])
|
||||||
|
_bsearch_cmp(sorted, cmp, lu[0], lu[1]);
|
Reference in New Issue
Block a user