Add 'game-sml/' from commit '113c3e67abe635f714f972a1e2ab0e4b24ff10f4'
git-subtree-dir: game-sml git-subtree-mainline:aa5357714dgit-subtree-split:113c3e67ab
This commit is contained in:
34
game-sml/fcore/bin-search.sml
Normal file
34
game-sml/fcore/bin-search.sml
Normal file
@@ -0,0 +1,34 @@
|
||||
structure BinSearch =
|
||||
struct
|
||||
fun helpExists (findNum, vec, low, high) =
|
||||
if high >= low then
|
||||
let
|
||||
val mid = low + ((high - low) div 2)
|
||||
val curNum = Vector.sub (vec, mid)
|
||||
in
|
||||
if curNum = findNum then true
|
||||
else if curNum < findNum then helpExists (findNum, vec, mid + 1, high)
|
||||
else helpExists (findNum, vec, low, mid - 1)
|
||||
end
|
||||
else
|
||||
false
|
||||
|
||||
fun exists (findNum, vec) =
|
||||
helpExists (findNum, vec, 0, Vector.length vec - 1)
|
||||
|
||||
fun helpFind (findNum, vec, low, high) =
|
||||
if high >= low then
|
||||
let
|
||||
val mid = low + ((high - low) div 2)
|
||||
val curNum = Vector.sub (vec, mid)
|
||||
in
|
||||
if curNum = findNum then mid
|
||||
else if curNum < findNum then helpFind (findNum, vec, mid + 1, high)
|
||||
else helpFind (findNum, vec, low, mid - 1)
|
||||
end
|
||||
else
|
||||
~1
|
||||
|
||||
fun find (findNum, vec) =
|
||||
helpFind (findNum, vec, 0, Vector.length vec - 1)
|
||||
end
|
||||
Reference in New Issue
Block a user