PHP排序算法(插入,选择,交换,冒泡,快速)
<?php//冒泡排序function BubbleSort($arr) { // 获得数组总长度 $num = count($arr); // 正向遍历数组 for ($i = 1; $i = $i ; $j--) { // 相邻两个数比较 if ($arr[$j] < $arr[$j-1]) { // 暂存较小的数 $iTemp = $arr[$j-1]; // 把较大的放前面 $arr[$j-1] = $arr[$j]; // 较小的放后面 $arr[$j] = $iTemp; } } } return $arr;}// 交换法排序function ExchangeSort($arr){ $num = count($arr); // 遍历数组 for ($i = 0;$i < $num - 1; $i++) { // 获得当前索引的下一个索引 for ($j = $i + 1; $j < $num; $j++) { // 比较相邻两个的值大小 if ($arr[$j] < $arr[$i]) { // 暂存较小的数 $iTemp = $arr[$i]; // 把较大的放前面 $arr[$i] = $arr[$j]; // 较小的放后面 $arr[$j] = $iTemp; } } } return $arr;}// 选择法排序function SelectSort($arr) { // 获得数组总长度 $num = count($arr); // 遍历数组 for ($i = 0;$i < $num-1; $i++) { // 暂存当前值 $iTemp = $arr[$i]; // 暂存当前位置 $iPos = $i; // 遍历当前位置以后的数据 for ($j = $i + 1;$j < $num; $j++){ // 如果有小于当前值的 if ($arr[$j] < $iTemp) { // 暂存最小值 $iTemp = $arr[$j]; // 暂存位置 $iPos = $j; } } // 把当前值放到算好的位置 $arr[$iPos] = $arr[$i]; // 把当前值换成算好的值 $arr[$i] = $iTemp; } return $arr;}// 插入法排序function InsertSort($arr){ $num = count($arr); // 遍历数组 for ($i = 1;$i = 0) && ($iTemp < $arr[$iPos])) { // 把前一个的值往后放一位 $arr[$iPos + 1] = $arr[$iPos]; // 位置递减 $iPos--; }4本文¥来源gao!%daima.com搞$代*!码$网9
搞代gaodaima码$arr[$iPos+1] = $iTemp; } return $arr;}// 快速排序function QuickSort($arr){ $num = count($arr); $l = $r = 0; $left = $right = array(); // 从索引的第二个开始遍历数组 for ($i = 1;$i < $num; $i++) { // 如果值小于索引1 if ($arr[$i] 1) { $left = QuickSort($left); } // 排序后的数组 $new_arr = $left; // 将当前数组第一个放到最后 $new_arr[] = $arr[0]; // 如果又索引有值 则对右索引排序 if ($r > 1) { $right = QuickSort($right); } // 根据右索引的长度再次增加数据 for($i = 0;$i