PHP最经典算法:
1.冒泡算法,在排序过程中总是将小数往前方,大数往后放,相当于气泡上升,所以称作冒泡排序。
$array = array(1,3,2,5,22,3,5,6,3,9,0);
function bubble($array){
$count = count($array);
if($count<1){
return $array;
}
for($i = 0;$i<$count;$i++){
for($j = $count-1;$j>$i;$j--){
if($array[$j-1]>$array[$j]){
$tmp = $array[$j-1];
$array[$j-1] = $array[$j];
$array[$j] = $tmp;
}
}
}
return $array;
}
2.快速排序,是对冒泡排序的一种改进。通过一趟排序将要排序的数据分隔成独立的两部分,其中的一部分的所有数据都比另外一部分排序要小,然后在按此方法分别对两部分数据进行快速排序,整个排序递归进行,以此达到整个数据变成有序序列。(php的内置函数sort()使用的就是快速排序)
function quickSort($arr){
$count = count($arr);
if($count<2){
return $arr;
}
$key = $arr[0];
$left_arr = array();
$right_arr = array();
for($i=1; $i<$count;$i++){
if($arr[$i]<=$key){
$left_arr[] = $arr[$i];
}else{
$right_arr[] = $arr[$i];
}
}
$left_arr = quickSort($left_arr);
$right_arr = quickSort($right_arr);
return array_merge($left_arr,array($key),$right_arr);
}
3.选择排序,选择排序 每一趟都从待排序的数据元素中选出最小或者最大的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。(因为被排序的数组相同的元素值可能被替换,所以选择排序是不稳定的算法)
function selectSort($arr){
$count = count($arr);
if($count<2){
return $arr;
}
for($i = 0;$i<$count;$i++){
for($j=$i+1;$j<$count;$j++){
if($arr[$i]>$arr[$j]){
$tmp = $arr[$i];
$arr[$i] = $arr[$j];
$arr[$j] = $tmp;
}
}
}
return $arr;
}
4.插入排序,有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序。
function insertSort($arr){
$count = count($arr);
if($count<2){
return $arr;
}
for($i = 0;$i<$count;$i++){
$tmp = $arr[$i];
$j = $i-1;
while($arr[$j] > $tmp){
$arr[$j+1] = $arr[$j];
$arr[$j] = $tmp;
$j--;
}
}
return $arr;
}