php高速ソート法の実現

647 ワード

	/* @     */
	function quickSort($left,$right,$arr){
		$l = $left;
		$r = $right;
		$pivot = $arr[($left+$right)/2];
		$temp = 0;
		
		while($l<$r){
					while($arr[$l]<$pivot){
						$l++;
					}
					while($arr[$r]>$pivot){
						$r--;
					}
					
					if($l>=$r) break;
					
					$temp = $arr[$l];
					$arr[$l] = $arr[$r];
					$arr[$r] = $temp;
					
					if($arr[$l]==$pivot) --$r;
					if($arr[$r]==$pivot) ++$l;
		}
		
		if($l==$r){
					$l++;
					$r--;
		}
		
		if($left<$r){
			quickSort($left, $r, $arr);
		}elseif($right>$l){
			quickSort($l, $right, $arr);
		}else{
			return $arr;
		}		
}