<?php function insertion_sort(&$arr){ $count = count($arr); for($i=0;$i<$count-1;$i++){ for($j=$i+1;$j<$count;$j++){ if($arr[$j]<$arr[$i]){ $arr[$i] = $arr[$i]^$arr[$j];//注释$arr[$i]、$arr[$j],为他们的原始值 $arr[$j] = $arr[$i]^$arr[$j];//$arr[$i]^$arr[$j]^$arr[$j] = $arr[$i] $arr[$i] = $arr[$i]^$arr[$j];//($arr[$i]^$arr[$j])^($arr[$i]^$arr[$j]^$arr[$j]) = $arr[$j] }else{ //这个$arr用例中,加了break后比较次数从36次降到了16次 break; } } } } $arr = [5,4,3,2,1,9,8,7,6]; insertion_sort($arr); echo '<pre/>'; print_r($arr); //结果 //Array //( // [0] => 1 // [1] => 2 // [2] => 3 // [3] => 4 // [4] => 5 // [5] => 6 // [6] => 7 // [7] => 8 // [8] => 9 //)