function bubbleSort($numbers) { $cnt = count($numbers); for ($i = 0; $i < $cnt; $i++) { for ($j = 0; $j < $cnt - $i - 1; $j++) { if ($numbers[$j] > $numbers[$j + 1]) { $temp = $numbers[$j]; $numbers[$j] = $numbers[$j + 1]; $numbers[$j + 1] = $temp; } } } return $numbers;} $num = array(20, 40, 60, 80, 30, 70, 90, 10, 50, 0);var_dump(bubbleSort($num));选择算法原理:每一次从待排序的数据元素中选出最小的一个元素,存放在序列的起始位置function selectionSort($numbers){ $count = count($numbers); for ($i = 0; $i < $count - 1; $i++) { $min = $i; for ($j = $i + 1; $j < $count; $j++) { if ($numbers[$min] > $numbers[$j]) { $min = $j; } } if ($min != $i) { $temp = $numbers[$min]; $numbers[$min] = $numbers[$i]; $numbers[$i] = $temp; } } return $numbers;}//快速排序:通过一趟排序将要排序的数据分割成独立的两部分,//其中一部分的所有数据都比另外一部分的所有数据都要小,//然后再按此方法对这两部分数据分别进行快速排序,//整个排序过程可以递归进行,以此达到整个数据变成有序序列。function quickSort($numbers) { static $test = 0; if (count($numbers) > 1) { $k = $numbers[0]; $x = []; $y = []; $count = count($numbers); for ($i = 1; $i < $count; $i++) { if ($numbers[$i] <= $k) { $x[] = $numbers[$i] ; } elseif ($numbers[$i] > $k) { $y[] = $numbers[$i] ; } } $x = quickSort($x); $y = quickSort($y); $test++; var_dump(array_merge($x, array($k), $y));var_dump('测试次数'.$test); return array_merge($x, array($k), $y); } else { return $numbers; }}$numbers = [20,40,60,80,30,70,90,10,50,0];//var_dump(bubbleSort($numbers));//var_dump(selectionSort($numbers));var_dump(quickSort($numbers));
新闻热点
疑难解答
图片精选