[Haskell-beginners] Removing the biggest element from a list
- maybe slow?
Lafras Uys
lafras at aims.ac.za
Mon May 24 09:27:03 EDT 2010
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
> I want to remove the biggest element from a list:
>
> withoutBiggest (x:xs) =
> withoutBiggestImpl (biggest x xs) [] (x:xs)
> where
> biggest :: (Ord a) => a -> [a] -> a
> biggest big [] = big
> biggest big (x:xs) =
> if x > big then
> biggest x xs
> else
> biggest big xs
> withoutBiggestImpl :: (Eq a) => a -> [a] -> [a] -> [a]
> withoutBiggestImpl big before (x:xs) =
> if big == x then
> before ++ xs
> else
> withoutBiggestImpl big (before ++ [x]) xs
>
>
> Works, but I am a little concerned that this is
> slower than needed, because the list has to be iterated twice.
>
> Can this be done faster?
import Data.List
init sort xs
or
import Data.List
delete (maximum xs) xs
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAkv6fqcACgkQKUpCd+bV+ko55wCbB/AVbb9OhfGK5ObsAc4yxVFH
YigAnjudQlhBThF2IvUOjXFknAxBHUnN
=XuKY
-----END PGP SIGNATURE-----
More information about the Beginners
mailing list