-
X-Received: by 2002:ac8:734f:: with SMTP id q15mr1572816qtp.19.1566464259411; Thu, 22
Aug 2019 01:57:39 -0700 (PDT)
X-Received: by 2002:ac8:734f:: with SMTP id q15mr1572816qtp.19.1566464259411; Thu, 22
Aug 2019 01:57:39 -0700 (PDT)
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin1!goblin2
!goblin.stu.neva.ru!newsfeed.xs4all.nl!newsfeed8.news.xs4all.nl!85.12.16.70.MIS
MATCH!peer03.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.am4!peer.am4.highwi
nds-media.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!f
14no3887332qtq.0!news-out.google.com!d29ni2506qtg.1!nntp.google.com!f14no388732
4qtq.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Thu, 22 Aug 2019 01:57:39 -0700 (PDT)
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=165.225.84.70;
posting-account=bMuEOQoAAACUUr_ghL3RBIi5neBZ5w_S
NNTP-Posting-Host: 165.225.84.70
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <5...@g...com>
Subject: Sortowanie bąbelkowe
From: Maciej Sobczak <s...@g...com>
Injection-Date: Thu, 22 Aug 2019 08:57:39 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Received-Bytes: 3926
X-Received-Body-CRC: 2041603032
Xref: news-archive.icm.edu.pl pl.comp.programming:213821
[ ukryj nagłówki ]Nudy jakieś, wszyscy na urlopach?
W każdym razie, skoro ostatnio były tu fajne dyskusje o różnych językach
programowania, to pozwolę sobie dla hecy pokazać sortowanie bąbelkowe w Wolframie.
Otóż jak wiadomo, pojedynczy krok sortowania polega na tym, że jeśli gdzieś jest para
elementów w "niewłaściwej" kolejności, to trzeba je zamienić miejscami. A potem
powtarzać to aż do skutku.
No to mamy, pojedynczy krok:
oneBubbleStep[lst_] :=
lst /. {pre___, a_, b_, post___} /; a > b -> {pre, b, a, post}
oneBubbleStep to funkcja, która ma jeden parametr, nazwany lst. Ta funkcja szuka
wzorca:
{pre___, a_, b_, post___}
wzorzec ma być listą, składającą się z:
1. jakiegoś pre, zero lub więcej elementów
2. jakiegoś a
3. jakiegoś b
4. jakiegoś post, zero lub więcej elementów
i jeśli przypadkiem a > b, to znaleziony wzorzec ma być zamieniony na taki:
{pre, b, a, post}
czyli elementy a i b mają się zamienić miejscami. Jeśli wzorzec nie pasuje, to żadna
zmiana nie jest wykonana. To zadziała zawsze, nawet na brzegach, np.:
oneBubbleStep[{10, 20, 40, 30, 50}]
{10, 20, 30, 40, 50}
I teraz biorę jakieś dane testowe:
testData = RandomSample[Range[10], 10]
{2, 10, 1, 3, 8, 9, 6, 4, 5, 7}
i aplikuję funkcję oneBubbleStep tak długo, aż wynik przestanie się zmieniać,
pokazując po drodze wszystkie pośrednie wyniki (sformatowałem ręcznie):
FixedPointList[oneBubbleStep, testData]
{
{2, 10, 1, 3, 8, 9, 6, 4, 5, 7},
{2, 1, 10, 3, 8, 9, 6, 4, 5, 7},
{1, 2, 10, 3, 8, 9, 6, 4, 5, 7},
{1, 2, 3, 10, 8, 9, 6, 4, 5, 7},
{1, 2, 3, 8, 10, 9, 6, 4, 5, 7},
{1, 2, 3, 8, 9, 10, 6, 4, 5, 7},
{1, 2, 3, 8, 9, 6, 10, 4, 5, 7},
{1, 2, 3, 8, 6, 9, 10, 4, 5, 7},
{1, 2, 3, 6, 8, 9, 10, 4, 5, 7},
{1, 2, 3, 6, 8, 9, 4, 10, 5, 7},
{1, 2, 3, 6, 8, 4, 9, 10, 5, 7},
{1, 2, 3, 6, 4, 8, 9, 10, 5, 7},
{1, 2, 3, 4, 6, 8, 9, 10, 5, 7},
{1, 2, 3, 4, 6, 8, 9, 5, 10, 7},
{1, 2, 3, 4, 6, 8, 5, 9, 10, 7},
{1, 2, 3, 4, 6, 5, 8, 9, 10, 7},
{1, 2, 3, 4, 5, 6, 8, 9, 10, 7},
{1, 2, 3, 4, 5, 6, 8, 9, 7, 10},
{1, 2, 3, 4, 5, 6, 8, 7, 9, 10},
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
}
Ten "program" ma swoją interpunkcję, która na pewno się tu komuś nie spodoba, ale ma
ciekawą zaletę: odzwierciedla opis słowny. Fajne?
--
Maciej Sobczak * http://www.inspirel.com
Następne wpisy z tego wątku
- 22.08.19 11:13 g...@g...com
- 23.08.19 08:18 Maciej Sobczak
- 23.08.19 09:29 g...@g...com
- 23.08.19 10:34 Maciej Sobczak
Najnowsze wątki z tej grupy
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
- Press Release - AEiC 2023, Ada-Europe Reliable Softw. Technol.
- Ada-Europe - AEiC 2023 early registration deadline approaching
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2023
- Ile cykli zajmuje mnożenie liczb 64-bitowych?
- Ideologia Polskiego Programisty wer.3
Najnowsze wątki
- 2024-05-04 Lunar Rover był elektrykiem. Ważył 35 kg Zasięg 80 km Na Księżycu w 1971 r.
- 2024-05-04 Marki => ERP Implementer <=
- 2024-05-04 Gdańsk => Head of International Freight Forwarding Department <=
- 2024-05-04 Marki => Wdrożeniowiec ERP <=
- 2024-05-03 Warszawa => Sprzedawca usług rekrutacyjnych <=
- 2024-05-03 Warszawa => Mid/Senior QA Engineer <=
- 2024-05-03 Warszawa => Mid/Senior QA Engineer <=
- 2024-05-03 Warszawa => Senior PHP Developer (Symfony) <=
- 2024-05-03 Rzeszów => UX/UI Designer <=
- 2024-05-03 Giertych przetarł szlak: byli członkowie zarządu Orlenu śledztwa prokuratorskie obserwują z zagranicy
- 2024-05-03 Warszawa => Senior Rust Software Engineer <=
- 2024-05-03 Kraków => UX/UI Designer <=
- 2024-05-03 Warszawa => International freight forwarder <=
- 2024-05-02 Silnik Stirlinga - energia mechaniczna wytwarzana z ciepła bez dostarczania paliwa!
- 2024-05-02 Kraków => Senior .Net Programmer <=