Ordinamento di una tabella senza utilizzare la funzione di ordinamento

Iniziare

Innanzitutto inizializziamo una variabile $ max con il 1 ° valore della tabella.

Quindi faremo un ciclo fino a quando la tabella contiene ancora elementi.

Usando la funzione di splice, svuoteremo la tabella.

pseudocodice

 Tabella IF contiene elementi trova il valore massimo determina la posizione dell'elemento trovato aggiungi l'elemento in cima alla tabella ordinato, in ordine crescente aggiungi l'elemento alla fine della tabella ordinato - in ordine decrescente elimina elementi trovati con giunzione - arresto condizione per il loop resettare la posizione resettare il max $ con il primo oggetto nella tabella diminuito con splice END AS 

La codifica

 #! / usr / bin / perl usa rigorosamente; usa avvertimenti; my @tab = qw / 9 3 7 14 8 7 25 12 1 6 /; my ($ n, $ max, @ tri, @ tri_desc); $ max = $ tab [0]; stampa "@tab \ n"; while (@tab) {$ _> $ max e $ max = $ _ per @tab; per (@tab) {$ n ++; last if $ max == $ _} unshift @ tri, $ max; spingere @ tri_desc, $ max; impiombare (@ scheda, $ n-1, 1); $ N = 0; $ max = $ tab [0]; } stampa "ordine crescente: \ \ n"; stampa "ordine discendente: \ _desc \ n"; __FINE__ 

risultati

Quando si utilizza la seguente combinazione: 9 3 7 14 8 7 25 12 1 6

Ordine ascendente: 1 3 6 7 7 8 9 12 14 25

Ordine discendente: 25 14 12 9 8 7 7

Articolo Precedente Articolo Successivo

I Migliori Consigli