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));
新聞熱點
疑難解答
圖片精選