$arr = array(4,2,5,1,3); function insertSort($arr) { $len = count($arr); // 元素总数 for ($i=1; $i<$len; $i++) { // 正常遍历 $tmp = $arr[$i]; // 获取当前元素 for ($j=$i-1; $j>=0; $j--) { //将当前元素,和之前已拍好序的数据进行比较,所以是递减 if ($tmp < $arr[$j]) { // 若当前元素小于之前元素(已排好序的),则交换位置 $arr[$j+1] = $arr[$j]; $arr[$j] = $tmp; } else { // 否则跳过循环,因前面的都已排好序 break; } } } return $arr; } $res = insertSort($arr); print_r($res);
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)