i=$i ";*/ $copia=$v[$i]; $v[$i]=$v[$k]; $v[$k]=$copia; } function posizionapivot(&$v,$sx,$dx){ while($sx<$dx){ /*$n=count($v); echo visualizza($v,$sx,$dx,"all'inizio del posizionamento del pivot $sx $dx");*/ $p=$sx; while($v[$dx]>=$v[$p] && $p<$dx){ // echo"dx=$dx
"; $dx--; } // echo"p=$p dx=$dx
"; if($p!=$dx){ scambia($v,$p,$dx); } $p=$dx; while($v[$sx]<=$v[$p] && $sx<$p){ // echo"sx=$sx
"; $sx++; } // echo"p=$p sx=$sx
"; if($p!=$sx){ scambia($v,$p,$sx); } /*echo "$sx $dx
"; $n=count($v); echo visualizza($v,$sx,$dx,"alla fine de posizionamento del pivot: $sx $p $dx");*/ } return $p; } function quicksort(&$v,$primo,$ultimo){ if($primo<$ultimo){ echo visualizza($v,$primo,$ultimo,"prima di muovere il pivot"); $p=posizionapivot($v,$primo,$ultimo); echo visualizza($v,$primo,$ultimo,"dopo aver mosso il pivot"); echo"

pos pivot $p valore pivot:$v[$p]

"; quicksort($v,$primo,$p-1); quicksort($v,$p+1,$ultimo); }else{ echo visualizza($v,$primo,$ultimo,"quicksort non eseguito"); //echo "

quicksort non eseguito

"; } } function visualizza($v,$da,$a,$titolo){ $n=count($v)-1; $html="

$titolo

"; for($k=0;$k<=$n;$k++){ if($da<=$k && $k<=$a){ $html.=""; }else{ $html.=""; } } $html.="
$v[$k]$v[$k]
"; return $html; } //inizio programma principale $v=array(7,18,5,89,56,71,17,48,45,32,23,12,17,60,30,23,50); $n=count($v); $pagina=visualizza($v,0,$n-1,'vettore non ordinato'); quicksort($v,0,$n-1); $pagina.=visualizza($v,0,$n-1,'vettore ordinato'); echo $pagina; ?>