排序算法集锦--php版

1、插入排序

$num1 = array(5,2,4,6,1,3);
$num2 = array();	//排序后的数组
$num2[0] = $num1[0];
$max = $num1[0];
$min = $num1[0];
$min = $num1[0];

$index = 0;
//插入排序
for($i=1,$length1=count($num1);$i<$length1;$i++){
	$length2=count($num2);
	if($length2>1){
		if($num1[$i]>=$max){
			$max = $num1[$i];
			$num2[$i] = $num1[$i];
		}else if($num1[$i]<=$min){
			$min = $num1[$i];
			for($j=$i;$j>-1;$j--){
				$num2[$j] = $j ? $num2[$j-1] : $num1[$i];
			}
		}else{
			for($j=0;$j<$i;$j++){
				if($num1[$i]>$num2[$j] && $num1[$i]<$num2[$j+1]){
					for($x=$i;$x>$j;$x--){
						$num2[$x] = $x>$j && $x<=$j+1 ? $num1[$i] : $num2[$x-1];
					}
					break;
				}
			}
		}
	}else{
		if($num1[1] > $num2[0]){
			$num2[1] = $num1[1];
		}else{
			$tmp = $num2[0];
			$num2[0] = $num1[1];
			$num2[1] = $tmp;
		}
		$min = $num2[0];
		$max = $num2[1];
	}
}

var_dump($num2);
原文地址:https://www.cnblogs.com/liwuming/p/10197369.html