php几种排序的方法--冒泡排序法,选择排序法,快速排序法
2018-02-27 15:39
543 查看
#冒泡排序 function bubbleSort(array $data = [1,22,2,2,45,67,33,122,32,45,543,221,234,230,4,7]) { $num = count($data); if ( $num <= 1 ) { return $data; } for($i=1;$i<$num;$i++) { for($k=0;$k<$num-$i;$k++) { if( $data[$k] > $data[$k+1] ) // > 从小到大 < 从大到小 { $param = $data[$k+1]; $data[$k+1] = $data[$k]; $data[$k] = $param; } } } return $data; } #选择排序法 function choiceSort(array $data = [1,22,2,2,45,67,33,122,32,45,543,221,234,230,4,7]) { $len = count($data); for($i=0;$i<$len-1; $i++) { $p = $i; for($j=$i+1; $j<$len; $j++) { if($data[$p] > $data[$j]) { // > 从小到大 < 从大到小 $p = $j; } } if($p != $i) { $param = $data[$p]; $data[$p] = $data[$i]; $data[$i] = $param; } } return $data; } #快速排序法 function quickSort($data = [1,22,2,45,67,33,122,32,45,543,221,234,230,4,7]) { //先判断是否需要继续进行 $length = count($data); if($length <= 1) { return $data; } //选择第一个元素作为基准 $first = $data[0]; //遍历除了标尺外的所有元素,按照大小关系放入两个数组内 //初始化两个数组 $left = []; //小于基准的 $right = []; //大于基准的 for($i=1; $i<$length; $i++) { if($first > $data[$i]) { //放入左边数组 $left[] = $data[$i]; } else { //放入右边 $right[] = $data[$i]; } } //再分别对左边和右边的数组进行相同的排序处理方式递归调用这个函数 $left = quickSort($left); $right = quickSort($right); //合并 return array_merge($left, [$first], $right); }
相关文章推荐
- PHP实现几种基本排序算法--冒泡排序法,快速排序法,选择排序法,插入排序法
- PHP的几种排序方法
- php 对2维数组 根据某个键值进行排序的几种方法!
- PHP排序的几种方法
- 经典数组排序方法------选择排序法,冒泡排序法
- PHP排序的几种方法
- php生成随机密码的几种方法
- 网站建设php 模拟POST提交的几种方法
- 几种常见排序方法的比较
- php数组方法+排序分页问题
- ios的几种简单有效的数组排序方法
- ios的几种简单有效的数组排序方法
- JAVA 中数组的几种排序方法
- PHP中数组的三种排序方法
- php中的一些数组排序方法分享
- php:undefined index的几种解决方法
- SQL 几种排序方法
- php中在类中使用静态方法的几种方式
- [置顶] PHP判断远程url是否有效的几种方法