diff --git a/Search/Haskell/binarySearch.hs b/Search/Haskell/binarySearch.hs new file mode 100644 index 0000000..d60af21 --- /dev/null +++ b/Search/Haskell/binarySearch.hs @@ -0,0 +1,12 @@ +binarySearch :: [Int] -> Int -> Int +binarySearch list element = + binarySearch' list 0 (size - 1) element + where size = length list + +binarySearch' :: [Int] -> Int -> Int -> Int -> Int +binarySearch' list left right element + | right < left = -1 + | (list !! middle) == element = middle + | (list !! middle) < element = binarySearch' list (middle + 1) right element + | otherwise = binarySearch' list left (middle - 1) element + where middle = (left + right) `div` 2 \ No newline at end of file diff --git a/Search/Haskell/linearSearch.hs b/Search/Haskell/linearSearch.hs new file mode 100644 index 0000000..a48303b --- /dev/null +++ b/Search/Haskell/linearSearch.hs @@ -0,0 +1,5 @@ +linearSearch :: [Int] -> Int -> Int +linearSearch [] _ = -1 +linearSearch (head: tail) element + | head == element = element + | otherwise = linearSearch tail element