Article View: pl.comp.lang.funkcyjne
Article #360Re: [Haskell] Lista bez powtórzeń.
From: Paweł 'Pasza' Ostrowski
Date: Sun, 15 Jun 2003 21:20
Date: Sun, 15 Jun 2003 21:20
36 lines
2208 bytes
2208 bytes
Dnia Sun, 15 Jun 2003 20:09:33 +0000 (UTC), Marcin Gajda napisał(a):
> Witam,
> Tak więc - macie może jakiś pomysł na coś szybszego? Mógłbym posortować w
> O(nlogn) jakimś merdżsortem, ale nie jestem pewien, czy tędy droga...
tak jak Qrczak już napisał sort + przeleciec sie po liscie, mi też nie
przychodzi nic prostszego do głowy
> Wszelkie uwagi (krytyczne!) na temat stylu i podejścia miło widziane - dopiero
> się zapoznaję z tym Haskellem :P
Przeczytałem ten kod i nie bardzo rozumiem, po co wyznaczasz tam medianę
ze środkowego i skrajnych elementów listy. Quicksort działa dla
dowolnego, wybranego do podziału elementu - niekoniecznie środkowego.
W ten sposób parę razy niepotrzebnie biegasz po liście (drop,
reverse). Być może bredzę (czegoś nie zrozumiałem), ale wydaje mi się,
że takie coś również zadziała i to pewnie szybciej:
#v+
rozna_lista2 :: Ord a => [ a ] -> Bool
rozna_lista2 [] = True
rozna_lista2 l = let m = head l
in
length ( [a | a <- l, a == m] ) == 1 &&
rozna_lista2 [ a | a <- l , a < m ] &&
rozna_lista2 [ a | a <- l , a > m ]
#v-
Jest w miarę zwięźle ale biegamy po liście 3 razy. Z akumulatorem byłoby
tylko raz.
--
Pasza
JMS dla MIDP - http://jmsme.sf.net
pasza (at) zodiac.mimuw.edu.pl
Technical Details
Message-ID:
<bcinv9$s2g$1@pasza.io.waw.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!news.ipartners.pl!news.internetia.pl!mimuw.edu.pl!news.mimuw.edu.pl!not-for-mailReferences:
<bcijpt$1s1$1@kenny.mimuw.edu.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!news.ipartners.pl!news.internetia.pl!mimuw.edu.pl!news.mimuw.edu.pl!not-for-mail From: Paweł 'Pasza' Ostrowski <pasza@acn.waw.pl> Newsgroups: pl.comp.lang.funkcyjne Subject: Re: [Haskell] Lista bez powtórzeń. Date: Sun, 15 Jun 2003 21:20:41 +0000 (UTC) Organization: independent Lines: 36 Message-ID: <bcinv9$s2g$1@pasza.io.waw.pl> References: <bcijpt$1s1$1@kenny.mimuw.edu.pl> NNTP-Posting-Host: zodiac.mimuw.edu.pl Mime-Version: 1.0 X-Trace: kenny.mimuw.edu.pl 1055711904 8076 10.1.1.1 (15 Jun 2003 21:18:24 GMT) X-Complaints-To: abuse@news.mimuw.edu.pl NNTP-Posting-Date: Sun, 15 Jun 2003 21:18:24 +0000 (UTC) User-Agent: slrn/0.9.7.4 (Linux) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit