ma perchč i compiti per casa sul php non te li fai da solo? dire "devo ordinare un array senza usare le funzioni native" č uguale a dire "la professoressa mi ha detto di fare questo ma non mi va e spero che qualcuno mi dia la pappa pronta"
detto questo, ecco la pappa pronta
fonte: http://en.wikipedia.org/wiki/Bubble_sort
Codice PHP:
$mioarray = array(
0 => -20,
1 => 10,
2 => -10,
3 => 30,
4 => 20,
5 => 1,
6 => 12,
);
//risultato da ottenre:
/*
$mioarray = array(
0 => -20,
2 => -10,
5 => 1,
1 => 10,
6 => 12,
4 => 20,
3 => 30
);
*/
//ordinamento mantenendo le chiavi
function bubbleSort(&$A){
$n = count($A);
$appoggio = array();
foreach($A as $key => $value)
$appoggio[] = array($key,$value);
$isGreaterThen = function($a,$b){
return $a[1] > $b[1];
};
$swap = function($f,$t) use(&$appoggio){
$tmp = $appoggio[$t];
$appoggio[$t] = $appoggio[$f];
$appoggio[$f] = $tmp;
};
while($n>0){
$newn = 0;
for($i = 1; $i<$n; $i++){
if($isGreaterThen($appoggio[$i-1],$appoggio[$i])){
$swap($i-1,$i);
$newn = $i;
}
}
$n = $newn;
}
//ricostruisco
$A = array();
foreach($appoggio as $el)
$A[$el[0]] = $el[1];
}
bubbleSort($mioarray);
print_r($mioarray);

Rispondi quotando