php排序算法-冒泡排序和快速排序
来源:互联网 发布:ue编辑器 mac版 编辑:程序博客网 时间:2024/05/22 08:36
总是对这两种排序特别迷糊,今天趁活不多,认真看了下,也算对自己有个交代吧
第一:冒泡排序
// 默认从小到大排序// 若从小到大则第二个参数为truefunction bubbling_sort($arr,$state = false){$length = count($arr);for ($i=0; $i < $length; $i++) { for ($j= 0 ; $j < $length - $i-1; $j++) { if(!$state){if($arr[$j] > $arr[$j+1]){$center = $arr[$j];$arr[$j] = $arr[$j + 1];$arr[$j + 1] = $center;}}else{if($arr[$j] < $arr[$j+1]){$center = $arr[$j];$arr[$j] = $arr[$j + 1];$arr[$j + 1] = $center;}}}}return $arr;}
上午写了冒泡法,整体思路还是很清晰的,但是到快速排序法的时候有点懵,又整理下思路
代码如下
function quickSort($array){ if(!isset($array[1])) return $array; //获取一个用于分割的关键字,一般是首个元素 $mid = $array[0]; $leftArray = array(); $rightArray = array(); unset($array[0]); foreach($array as $v){ if($v > $mid){ //把比$mid大的数放到一个数组里 $rightArray[] = $v; }else{ //把比$mid小的数放到另一个数组里 $leftArray[] = $v; }}//把比较小的数组再一次进行分割 $leftArray = quickSort($leftArray); $leftArray[] = $mid; //把比较大的数组再一次进行分割 $rightArray = quickSort($rightArray); //组合两个结果 return array_merge($leftArray,$rightArray); }
这里主要就是先用一个分割值(首元素),对数组进行循环遍历,然后把比分割值大的放到一个数组中,比分割值小的放到另外一个数组中
再递归调用,最后合并数组
快速排序相对来说效率较高
还可以使用for循环
如下
function quick_sort($array){$left_array = array();$right_array = array();if(!isset($array[1])) return $array;$key = $array[0];for($i=1;$i<$length;$i++){ if($array[$i] > $key){ $right_array[] = $array[$i]; }else{ $left_array[] = $array[$i]; }}$left_array = quick_sort($left_array);$right_array = quick_sort($right_array);return array_merge($right_array,array($key),$left_array); }
这段代码是复制一篇文章的...链接找不到了...
今天总算把冒泡排序和快速排序给看完了,具体优化升级什么的...以后再看吧
0 0
- php排序算法(冒泡排序,快速排序)
- php排序算法-冒泡排序和快速排序
- 排序算法快速排序和冒泡排序
- php中的冒泡和快速排序算法
- php冒泡排序算法和快速排序算法
- php冒泡排序与快速排序算法
- 使用PHP描述冒泡排序和快速排序算法
- PHP常用排序算法 冒泡排序 快速排序 插入排序
- 冒泡排序算法和快速排序算法
- PHP实现冒泡排序和快速排序
- php的冒泡排序和快速排序
- php冒泡排序和快速排序
- 快速排序算法和冒泡排序
- 冒泡排序和快速排序算法练习
- php实现排序算法(一) 冒泡排序 快速排序
- php 冒泡排序 快速排序
- php 冒泡排序 快速排序
- php 冒泡排序&快速排序
- 水仙花数2074
- 基于最新版本React Native实现JsBundle预加载,界面秒开优化
- JAVA中定时器的使用
- 日志系统ELK使用详解(一)--如何使用
- 优化基于FPGA的深度卷积神经网络的加速器设计
- php排序算法-冒泡排序和快速排序
- 1.安卓全貌
- ubuntu16.04 下 安装rjava、Rwordseg、wordcloud安装
- G
- memcached在大负载高并发网站上的应用(一)
- java异常
- JAVA构建架构思想
- lua中的魔法字符转义问题
- 5-13