Aby ten ogólny algorytm przedstawić w Perlu jako transformację Schwartza należy napisać poniższy kod: @sorted = map { $_-> } # wyodrębnienie oryginalnych elementów listy sort { $a-> <=> $b-> } # porównanie numeryczne po kluczu map { [$_, length($_)] } # obliczenie długości łańcucha (wyrazu) @unsorted;
Przykład 2. Należy posortować pliki w danym katalogu według rozmiaru od wartości największej do najmniejszej. Jedną z metod w języku programowania Perl jest poniższy kod. opendir(my $dh, '.') || die; @names = readdir $dh;
@sorted_files = sort { -s $b <=> -s $a } @names; Ten najprostszy sposób posiada jednocześnie największą wadę tego rozwiązania – sprawdzanie rozmiaru każdego pliku wykonywane jest wiele razy, co przy dużej ilości plików może mieć niekorzystny wpływ na wydajność systemu dyskowego i operacji wejścia-wyjścia. Średnia złożoność obliczeniowa funkcji sort w tej metodzie sortowania jest rzędu O(n log n), w najgorszym przypadku O(n2). Zatem sposób ten jest efektywny dla elementów o niewielkiej liczebności. Pewnym rozwiązaniem tego problemu jest wykonanie obliczenia rozmiarów plików przed wykonaniem sortowania.