olá, sou novo em PHP e resolvi fazer uma função que ordena todos os numeros de um array em ordem crescente como ele funciona:
tenho um vetor (15, 32, 12, 68, 1) ele percorre o vetor inteiro ate achar o maior. quarda o indice do maior e substitui com o ultimo.
ficaria mais ou menos assim (em passos)
1 - (15, 32, 12, 68, 1)
2 - (15, 32, 12, 1, 68)
3 - (15, 1, 12, 32, 68)
4 - (12, 1, 15, 32, 68)
5 - (1, 12, 15, 32, 68)
mas quando executo o meu codio um indice fica fora de lugar (pelo meu código o indice 13)
meu codigo:
<?php $vetor = array(15,16,12,48,96,13,48,16,54,58,26,35,78,91,12,48,63,75); var_dump( $vetor ); // mostra todo vetor $max = sizeof( $vetor ) -1; // atribui para max o tamanho do vetor -1 $maior = $nodo_maior = $percorre = $aux = 0; echo '<p />'; while( $max > 0) // percorre todo o vetor diminuindo as possibilidades { $percorre = $maior = 0; while ( $percorre < $max ) // acha o maior { if ( $vetor[$percorre] > $maior ) { $maior = $vetor[$percorre]; $nodo_maior = $percorre; } $percorre++; } $aux = $vetor[$max]; // troca o maior com o ultimo indice $vetor[$max] = $maior; $vetor[$nodo_maior] = $aux; $max--; } var_dump($vetor);?>
resultado:
array(18) { [0]=> int(15) [1]=> int(16) [2]=> int(12) [3]=> int(48) [4]=> int(96) [5]=> int(13) [6]=> int(48) [7]=> int(16) [8]=> int(54) [9]=> int(58) [10]=> int(26) [11]=> int(35) [12]=> int(78) [13]=> int(91) [14]=> int(12) [15]=> int(48) [16]=> int(63) [17]=> int(75) }array(18) { [0]=> int(12) [1]=> int(12) [2]=> int(13) [3]=> int(15) [4]=> int(16) [5]=> int(16) [6]=> int(26) [7]=> int(35) [8]=> int(48) [9]=> int(48) [10]=> int(48) [11]=> int(54) [12]=> int(63) [13]=> int(58) [14]=> int(75) [15]=> int(78) [16]=> int(91) [17]=> int(96) }