From c4faa106e93bbd9e25132cba5b2ba58d303afb49 Mon Sep 17 00:00:00 2001 From: fannyvieira Date: Wed, 3 Oct 2018 20:25:04 -0300 Subject: [PATCH] Add haskell search algorithms implementation --- Search/Haskell/binarySearch.hs | 12 ++++++++++++ Search/Haskell/linearSearch.hs | 5 +++++ 2 files changed, 17 insertions(+) create mode 100644 Search/Haskell/binarySearch.hs create mode 100644 Search/Haskell/linearSearch.hs 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