quicksort works
This commit is contained in:
parent
49ef3f9f7c
commit
5e1c81beb7
1 changed files with 39 additions and 8 deletions
|
|
@ -1,3 +1,21 @@
|
||||||
|
toStr : List Int -> List Char
|
||||||
|
toStr xs = case xs of
|
||||||
|
Cons a as => Cons (toChar a) (toStr as)
|
||||||
|
Nil => Nil
|
||||||
|
|
||||||
|
toChar : Int -> Char
|
||||||
|
toChar x = case x of
|
||||||
|
0 => '0'
|
||||||
|
1 => '1'
|
||||||
|
2 => '2'
|
||||||
|
3 => '3'
|
||||||
|
4 => '4'
|
||||||
|
5 => '5'
|
||||||
|
6 => '6'
|
||||||
|
7 => '7'
|
||||||
|
8 => '8'
|
||||||
|
9 => '9'
|
||||||
|
|
||||||
filter p xs = case xs of
|
filter p xs = case xs of
|
||||||
Nil => Nil
|
Nil => Nil
|
||||||
Cons x xs => case p x of
|
Cons x xs => case p x of
|
||||||
|
|
@ -8,16 +26,29 @@ filter p xs = case xs of
|
||||||
Nil => bs
|
Nil => bs
|
||||||
Cons x xs => Cons x (xs ++ bs)
|
Cons x xs => Cons x (xs ++ bs)
|
||||||
|
|
||||||
.<= a b = case a < b of
|
.:: a as = Cons a as
|
||||||
False => a == b
|
|
||||||
True => True
|
|
||||||
|
|
||||||
|
quicksort : List Int -> List Int
|
||||||
quicksort xs = case xs of
|
quicksort xs = case xs of
|
||||||
Nil => Nil
|
Nil => Nil
|
||||||
Cons a as => quicksort (filter (\y. a < y) xs) ++ (Cons a (quicksort (filter (\y. y <= a)) xs))
|
Cons a as => let smaller = quicksort (filter (\y. y < a) xs)
|
||||||
|
in let bigger = quicksort (filter (\y. a < y) xs)
|
||||||
|
in smaller ++ (a :: bigger)
|
||||||
|
|
||||||
head xs = case xs of
|
descList : Int -> Int -> List Int
|
||||||
Cons a _ => a
|
descList from to = case to < from of
|
||||||
|
False => Cons to (descList from (to - 1))
|
||||||
|
True => Nil
|
||||||
|
|
||||||
main : Int
|
main = let list = (5 :: (2 :: (8 :: (9 :: (6 :: (0 :: (1 :: Nil)))))))
|
||||||
main = head (quicksort (Cons 9 (Cons 8 (Cons 7 (Cons 6 (Cons 5 (Cons 4 (Cons 3 (Cons 2 (Cons 1 (Cons 0 Nil)))))))))))
|
in printStr (toStr (quicksort list))
|
||||||
|
|
||||||
|
{-
|
||||||
|
|
||||||
|
-- Program output --
|
||||||
|
0125689
|
||||||
|
In dispose
|
||||||
|
Out dispose
|
||||||
|
ExitSuccess
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue