//quick sort global proc quickSortByZ(int $id[], int $start, int $end){ int $i = $start; int $k = $end; if($end - $start >= 1){ int $pivotId = $id[$start]; float $pivot_z = getParticleZ(getParticleShape(),$pivotId); while($k > $i){ float $i_z = getParticleZ(getParticleShape(),$id[$i]); float $k_z = getParticleZ(getParticleShape(),$id[$k]); while($i_z <= $pivot_z && $i <= $end && $k > $i ){ $i+=1; $i_z = getParticleZ(getParticleShape(),$id[$i]); } while($k_z > $pivot_z && $k >= $start && $k >= $i ){ $k-=1; $k_z = getParticleZ(getParticleShape(),$id[$k]); } if($k > $i){ arrayElementSwap($id,$i,$k); } } arrayElementSwap($id,$start,$k); quickSortByZ($id,$start,$k-1); quickSortByZ($id,$k+1,$end); } }