-
Data: 2019-08-22 10:57:39
Temat: Sortowanie bąbelkowe
Od: Maciej Sobczak <s...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie 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
- Xiaomi [Chiny - przyp. JMJ] produkuje w całkowitych ciemnościach i bez ludzi
- Prezydent SZAP/USONA Trump ułaskawił prezydenta Hondurasu Hernandeza skazanego na 45 lat więzienia
- Rosjanie chwalą się prototypem komputera kwantowego. "Najważniejszy projekt naukowy Rosji"
- A Szwajcarzy kombinują tak: FinalSpark grows human neurons from stem cells and connects them to electrode arrays
- Re: Najgorszy język programowania
- NOWY: 2025-09-29 Alg., Strukt. Danych i Tech. Prog. - komentarz.pdf
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
Najnowsze wątki
- 2026-01-29 KSeF - 13 wątpliwości
- 2026-01-29 A ja się pochwalę
- 2026-01-29 Warszawa => Mid/Senior IT Recruiter <=
- 2026-01-29 Warszawa => Senior Java Developer <=
- 2026-01-29 Warszawa => IT Recruiter <=
- 2026-01-28 Degradacja
- 2026-01-28 Wysoki Sąd poinstruował czego unikać wyzywając Owsiaka "Równiejszego"
- 2026-01-28 Białystok => Solution Architect (Workday) - Legal Systems <=
- 2026-01-28 Białystok => Preseles Inżynier (background baz danych) <=
- 2026-01-28 Wrocław => Konsultant wdrożeniowy ERP <=
- 2026-01-28 Łódź => Microsoft Engineer <=
- 2026-01-28 Białystok => Tester manualny <=
- 2026-01-27 Tradycja ciągania posłów po sądach za wystąpienia w Sejmie będzie kontynuowana [Lepper 2]
- 2026-01-27 Pierwszy raz sprzedano więcej samochodów zeeletryfikowanych niż ice
- 2026-01-27 Elektryczny Kałasznikow




Jak kupić pierwsze mieszkanie? Eksperci podpowiadają