1.首先定义一个需要排序的数组:
$arr=array(12,432,123,454,232,123,349,3,5,745,90);
2.冒泡排序:相邻之间的数据做对比,每次对比后得出一个下次不需要再对比的数据。
function maopao($arr){ $len=count($arr); for($i=0;$i<$len;$i++){ for($j=0;$j<$len-$i;$j++){ if($arr[$j]<$arr[$j+1]){ $temp=$arr[$j; $arr[$j]=$arr[$j+1]; $arr[$j+1]=$temp; } } } return $arr; }
3.插入排序:每次从待排序的一组数中取一个数与已排序的数据做对比。
function charu($arr){ $len=count($arr); for($i=1;$i<$len;$i++){ for($j=$i;$j>0;$j--){ if($arr[$j]>$arr[$j-1]){ $temp=$arr[$j]; $arr[$j]=$arr[$j-1]; $arr[$j-1]=$temp; } } } return $arr; }
4.选择排序:每次从待排序的一组数中判断最小或最大的数,并交换位置。
function xuanze($arr){ $len=count($arr); for($i=0;$i<$len-1;$i++){ $key=$i; for($j=$i+1;$j<$len;$j++){ if($arr[$key]<$arr[$j]){ $key=$j; } } if($key!=$i){ $temp=$arr[$key]; $arr[$key]=$arr[$i]; $arr[$i]=$temp; } } return $arr; }
5.快速排序:以某值作参考,以该值为基准,分割带排序数组,最后递归合并。
function quicksort($arr){ $len=count($arr); if($len<=1) return $arr; $left=array(); $right=array(); $key=$arr[0]; for($i=1;$i<$len;$i++){ if($arr[$i]>$key) $right[]=$arr[$i]; else $left[]=$arr[$i]; } $left=quicksort($left); $right=quicksort($right); return array_merge($left,array($key),$right); }
6.未尽事宜,请多交流