Lajittele taulukko ilman lajittelutoimintoa
Päästä alkuun
Ensinnäkin alustamme muuttujan $ max taulukon ensimmäisen arvon kanssa.
Sitten teemme silmukan, kunnes taulukossa on edelleen elementtejä.
Käyttämällä liitosfunktiota tyhjennämme pöydän.
pseudokoodi
IF-taulukossa on elementtejä, jotka löytävät maksimiarvon, joka määrittää löydetyn elementin sijainnin lisäämällä kohteen taulukon yläreunaan lajiteltuna, lisäämällä nousevassa järjestyksessä kohteen taulukon loppuun lajiteltuna - laskevassa järjestyksessä poistetaan kohteet, jotka löytyvät liitoskohdasta - pysäytys silmukan nollauksen tila palauttaa sijainnin nollaamalla maksimiarvoa taulukon ensimmäisen kohteen kanssa pienentäen splice END AS: llä
Koodaus
#! / usr / bin / perl käyttää tiukkoja, käytä varoituksia; my @ tab = qw / 9 3 7 14 8 7 25 12 1 6 /; my ($ n, $ max, @ tri, @ tri_desc); $ max = $ -välilehti [0]; tulosta "@tab"; kun (@tab) {$ _> $ max ja $ max = $ _ @tabille; (@tab) {$ n ++; viimeinen, jos $ max == $ _} unshift @ tri, $ max; paina @ tri_desc, $ max; jatkos (@ välilehti, $ n-1, 1); $ N = 0; $ max = $ -välilehti [0]; } print "nouseva järjestys: n"; tulostaa "laskevassa järjestyksessä: _desc n"; __END__
tulokset
Käytettäessä seuraavaa yhdistelmää: 9 3 7 14 8 7 25 12 1 6
Nouseva järjestys: 1 3 6 7 7 8 9 12 14 25
Laskeva järjestys: 25 14 12 9 8 7 7