Last change
on this file since 3840 was
3840,
checked in by yura, 13 years ago
|
|
-
Property svn:eol-style set to
native
-
Property svn:keywords set to
"Author Date Id Revision"
|
File size:
871 bytes
|
Rev | Line | |
---|
[3840] | 1 | $module Sort; |
---|
| 2 | |
---|
[3832] | 3 | $use Compare StdIO; |
---|
| 4 | |
---|
| 5 | $func Sort e.list = e.list; |
---|
| 6 | |
---|
| 7 | Sort { |
---|
| 8 | /* empty */ = /* empty */; |
---|
| 9 | s.head e.tail = <Split s.head e.tail> :: (e.smaller) (e.greater), |
---|
| 10 | <Sort e.smaller> s.head <Sort e.greater>; |
---|
| 11 | }; |
---|
| 12 | |
---|
| 13 | $func Split s.num e.list = (e.list) (e.list); |
---|
| 14 | |
---|
| 15 | Split s.num e.list, e.list : { |
---|
| 16 | /* empty */ = () (); |
---|
| 17 | s.head e.tail = <Split s.num e.tail> :: (e.smaller) (e.greater), { |
---|
| 18 | <Le (s.head) (s.num)> = (s.head e.smaller) (e.greater); |
---|
| 19 | (e.smaller) (s.head e.greater); |
---|
| 20 | }; |
---|
| 21 | }; |
---|
| 22 | |
---|
| 23 | $func Main = e; |
---|
| 24 | |
---|
| 25 | Main, <WriteLn <Sort 1 5 2 5 2 1>>; |
---|
| 26 | |
---|
| 27 | |
---|
| 28 | |
---|
| 29 | $func Split2 s.num e.list = (e.list) (e.list); |
---|
| 30 | |
---|
| 31 | Split2 s.num e.list, |
---|
| 32 | () () (e.list) $iter { |
---|
| 33 | e.list : s.head e.tail, { |
---|
| 34 | <Le (s.head) (s.num)>, |
---|
| 35 | (e.smaller s.head) (e.greater) (e.tail); |
---|
| 36 | (e.smaller) (e.greater s.head) (e.tail); |
---|
| 37 | }; |
---|
| 38 | } :: (e.smaller) (e.greater) (e.list), |
---|
| 39 | e.list : /*empty*/, |
---|
| 40 | (e.smaller) (e.greater); |
---|
Note: See
TracBrowser
for help on using the repository browser.