diff --git a/php/11_sort/Sort.php b/php/11_sort/Sort.php index 557cf52..84519ca 100644 --- a/php/11_sort/Sort.php +++ b/php/11_sort/Sort.php @@ -1,5 +1,27 @@ $arr[$j + 1]) { + $tmp = $arr[$j]; + $arr[$j] = $arr[$j + 1]; + $arr[$j + 1] = $tmp; + $flag = true; + } + } + if (!$flag) { + break; + } + } +} + +// 插入排序 function insertionSort(&$arr) { $n = count($arr); @@ -20,6 +42,26 @@ function insertionSort(&$arr) } } +// 选择排序 +function selectionSort(&$arr) +{ + $length = count($arr); + if ($length <= 1) return; + + for ($i = 0; $i < $length - 1; $i++) { + //先假设最小的值的位置 + $p = $i; + for ($j = $i + 1; $j < $length; $j++) { + if ($arr[$p] > $arr[$j]) { + $p = $j; + } + } + $tmp = $arr[$p]; + $arr[$p] = $arr[$i]; + $arr[$i] = $tmp; + } +} + $arr = [1,4,6,2,3,5,4]; insertionSort($arr); var_dump($arr);