Opa. Alguém sabe como eu posso exibir o vetor ordenado usando esses métodos do QuickSort:
<?php
$vetor = array(7,4,5,6,1,3,2,8);
//print_r($sorted);
function quicksrt ($vetor, $p, $r) {
// *$p = pivot - $r = + á direita
while ($p < $r) {
$j = separa ($vetor, $p, $r);
quicksrt ($vetor, $p, $j-1);
$p = $j + 1;
echo $j;
}
}
// Separa left de right pra ordenar valores
function separa ($v, $p, $r) {
$c = $v[$p];
$i = $p+1;
$j = $r;
// Pega 'right' atual e faz um while nele
// faz um loop normal dentro do trecho especificado
while ($i <= $j) {
// 'left'
if ($v[$i] <= $c) {
$v[$i-1] = $v[$i];
++$i;
}
// 'right' ou resto
else {
$t = $v[$i];
$v[$i] = $v[$j];
$v[$j] = $t;
--$j;
}
$v[$j] = $c;
}
return $j;
}
$sorted = quicksrt ($vetor, 0, 7);
print_r($sorted);
function montaVetor ($valor) {
//$vetorf .= $valor;
$vetorf .= 0;
}
?>
A função separa retorna só o $j, que a a posição “maxima a direita” do pivô. Na função separa veja que faz a troca dos valores do vetor, mas eu preciso desse vetor pra exibir no final.