Sortowanie tabeli bez użycia funkcji sortowania
Rozpoczęcie
Przede wszystkim inicjujemy zmienną $ max z pierwszą wartością tabeli.
Potem zrobimy pętlę, aż tabela będzie zawierała elementy.
Używając funkcji łączenia, opróżnimy tabelę.
Pseudo kod
JEŻELI tabela zawiera elementy, znajdź maksymalną wartość określającą pozycję znalezionego elementu, dodaj element na górze posortowanej tabeli, w kolejności rosnącej dodaj element na koniec posortowanej tabeli - w kolejności malejącej usuń elementy znalezione z łączeniem - zatrzymanie warunek do zresetowania pętli reset pozycji pozycja max z pierwszą pozycją w tabeli zmniejszoną za pomocą splotu END AS
Kodowanie
#! / usr / bin / perl use strict; użyj ostrzeżeń; my @tab = qw / 9 3 7 14 8 7 25 12 1 6 /; my ($ n, $ max, @ tri, @ tri_desc); $ max = $ tab [0]; drukuj „@tab n”; while (@tab) {$ _> $ max i $ max = $ _ dla @tab; for (@tab) {$ n ++; last if $ max == $ _} unshift @ tri, $ max; push @ tri_desc, $ max; splice (@ tab, $ n-1, 1); $ n = 0; $ max = $ tab [0]; } print "kolejność rosnąca: n"; drukuj „malejący porządek: _desc n”; __KONIEC__
Wyniki
Używając następującej kombinacji: 9 3 7 14 8 7 25 12 1 6
W porządku rosnącym: 1 3 6 7 7 8 9 12 14 25
Malejąco: 25 14 12 9 8 7 7