Classificando uma tabela sem usar a função de classificação

Começando

Primeiramente, inicializamos uma variável $ max com o primeiro valor da tabela.

Então faremos um loop até que a tabela ainda contenha elementos.

Usando a função splice, esvaziaremos a tabela.

Pseudo-código

 Se tabela contiver elementos encontre o valor máximo determine a posição do elemento encontrado adicione o item ao topo da tabela ordenada, em ordem crescente adicione o item ao final da tabela ordenada - em ordem descendente apague itens encontrados com emenda - parando condição para o loop redefinir a posição redefinir o max $ com o primeiro item na tabela diminuída com splice END AS 

A codificação

 #! / usr / bin / perl use strict; use avisos; meu @tab = qw / 9 3 7 14 8 7 25 12 1 6 /; my ($ n, $ max, @ tri, @ tri_desc); $ max = $ tab [0]; print "@tab \ n"; while (@tab) {$ _> $ max e $ max = $ _ para @tab; para (@tab) {$ n ++; last if $ max == $ _} unshift @ tri, $ max; push @ tri_desc, $ max; emenda (separador @, $ n-1, 1); $ n = 0; $ max = $ tab [0]; } print "ordem crescente: \ \ n"; print "ordem decrescente: \ _desc \ n"; __FIM__ 

Resultados

Ao usar a seguinte combinação: 9 3 7 14 8 7 25 12 1 6

Ordem Ascendente: 1 3 6 7 7 8 9 12 14 25

Ordem Decrescente: 25 14 12 9 8 7 7

Artigo Anterior Próximo Artigo

Principais Dicas