Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,13 @@
|
|||
merge [] ys = ys
|
||||
merge xs [] = xs
|
||||
merge xs@(x:xt) ys@(y:yt) | x <= y = x : merge xt ys
|
||||
| otherwise = y : merge xs yt
|
||||
|
||||
split (x:y:zs) = let (xs,ys) = split zs in (x:xs,y:ys)
|
||||
split [x] = ([x],[])
|
||||
split [] = ([],[])
|
||||
|
||||
mergeSort [] = []
|
||||
mergeSort [x] = [x]
|
||||
mergeSort xs = let (as,bs) = split xs
|
||||
in merge (mergeSort as) (mergeSort bs)
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
mergePairs (sorted1 : sorted2 : sorteds) = merge sorted1 sorted2 : mergePairs sorteds
|
||||
mergePairs sorteds = sorteds
|
||||
|
||||
mergeSortBottomUp list = mergeAll (map (\x -> [x]) list)
|
||||
|
||||
mergeAll [sorted] = sorted
|
||||
mergeAll sorteds = mergeAll (mergePairs sorteds)
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
sort = sortBy compare
|
||||
sortBy cmp = mergeAll . sequences
|
||||
where
|
||||
sequences (a:b:xs)
|
||||
| a `cmp` b == GT = descending b [a] xs
|
||||
| otherwise = ascending b (a:) xs
|
||||
sequences xs = [xs]
|
||||
|
||||
descending a as (b:bs)
|
||||
| a `cmp` b == GT = descending b (a:as) bs
|
||||
descending a as bs = (a:as): sequences bs
|
||||
|
||||
ascending a as (b:bs)
|
||||
| a `cmp` b /= GT = ascending b (\ys -> as (a:ys)) bs
|
||||
ascending a as bs = as [a]: sequences bs
|
||||
Loading…
Add table
Add a link
Reference in a new issue