php实现经典算法列子

it2024-07-10  45

php实现经典算法列子

先写一部分,然后慢慢更新,有些理解不透彻的地方欢迎大家指正

冒泡排序

原理:就是将所给数,每一个都和非本身的数比较,如果某位上的数字大于它,则放入后面,小于放前面

function msort($result) { $len = count($result); if($len <= 1) return $result; for($i=0;$i<$len-1;$i++) { for($j=0;$j<$len-1-$i;$j++) { if($result[$j]<$result[$j+1]) { $temp = $result[$j]; $result[$j] = $result[$j+1]; $result[$j+1] = $temp; } } } return $result; }

快速排序

原理:将数据分割前半部分和后半部分,对前半部分和后半部分排序,然后在组合成有序的排序

function qsort($result) { $len = count($result); if($len <= 1) { return $result; } $keys[] = $result[0]; $left = array(); $right = array(); for($i=1;$i<$len;$i++) { if($result[$i] < $result[0]) { $left[] = $result[$i]; } else { $right[] = $result[$i]; } } $left = qsort($left); $right = qsort($right); return array_merge($left,$keys,$right); }

选择排序

每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完

function ssort($result) { $count = count($result); for($i=0;$i<$count-1;$i++) { $k = $i; for($j=$i+1;$j<$count;$j++) { if($result[$k] > $result[$j]) { $k = $j; } if($k != $i) { $tmp = $result[$i]; $result[$i] = $result[$k]; $result[$k] = $tmp; } } } return $result; }
最新回复(0)