php 经典算法,冒泡算法,快速排序,选择排序,插入排序
2015-10-17 17:38
567 查看
PHP最经典算法:
1.冒泡算法,在排序过程中总是将小数往前方,大数往后放,相当于气泡上升,所以称作冒泡排序。
2.快速排序,是对冒泡排序的一种改进。通过一趟排序将要排序的数据分隔成独立的两部分,其中的一部分的所有数据都比另外一部分排序要小,然后在按此方法分别对两部分数据进行快速排序,整个排序递归进行,以此达到整个数据变成有序序列。(php的内置函数sort()使用的就是快速排序)
3.选择排序,选择排序 每一趟都从待排序的数据元素中选出最小或者最大的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。(因为被排序的数组相同的元素值可能被替换,所以选择排序是不稳定的算法)
4.插入排序,有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序。
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; }
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 插入排序
- 快速排序
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- 动易2006序列号破解算法公布
- 文件遍历排序函数
- C#选择排序法实例分析
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充