排序算法(PHP)

=0 && $arr[$key] >$tmp){
			$arr[$key+1] = $arr[$key];
			$key--;
		}
		if(($key+1) != $i){
			$arr[$key+1] = $tmp;
		}
	}
	return $arr;
}
$sortArr = insertSort($arr);
#var_dump($sortArr);

#快速排序
function quickSort($arr){
	$num = count($arr);
	if($num <= 1){
		return $arr;
	}
	$arr_left = array();
	$arr_right = array();
	$tmp = $arr[0];
	for($i=1;$i<$num;$i++){
		if($arr[$i] > $arr[0]){
			$arr_right[] = $arr[$i];
		}else{
			$arr_left[] = $arr[$i];
		}
	}
	$arr_right = quickSort($arr_right);
	$arr_left = quickSort($arr_left);
	return array_merge($arr_left,array($tmp),$arr_right);
}
$sortArr = quickSort($arr);
var_dump($sortArr);

#二分查找插入排序
#$arr = array(34,23,213);
function erfenInsertSort($arr){
	$num = count($arr);
	for($i=1;$i<$num;$i++){
		$left = 0;
		$right = $i-1;
		$middle = 0;
		$insertData = $arr[$i];
		
		while($left <= $right){
			$middle = intval(($left+$right)/2);
			if($insertData > $arr[$middle]){
				$left = $middle + 1;
			}else{
				$right = $middle - 1;
			}
		}
		
		for($j = $i-1; $j>=0&&$j>=$left; $j--){
			$arr[$j+1] = $arr[$j];
		}
		$arr[$j+1] = $insertData;
	}
	return $arr;
}
$sortArr = erfenInsertSort($arr);
var_dump($sortArr);
?>

 

你可能感兴趣的:(php)