php 排序算法
2015-10-19 21:23
651 查看
冒泡排序
排序 n 个项目要Ο(n²)次比较,在最坏状况下则需要Ο(n²)次比较
快速排序
排序 n 个项目要Ο(n log n)次比较,在最坏状况下则需要Ο(n2)次比较
归并排序和堆排序、快速排序的比较
若从空间复杂度来考虑:首选堆排序,其次是快速排序,最后是归并排序。
若从稳定性来考虑,应选取归并排序,因为堆排序和快速排序都是不稳定的。
若从平均情况下的排序速度考虑,应该选择快速排序。
二维数组排序
1、使用array_multisort();
array_multisort(排序数组字段值的一维数组,待排序二维数组);
2、
排序 n 个项目要Ο(n²)次比较,在最坏状况下则需要Ο(n²)次比较
function maopao($arr) { $len = count($arr); //从小到大 for($i=1;$i<$len;$i++) { for($j=$len-1;$j>=$i;$j--) if($arr[$j]<$arr[$j-1]) {//如果是从大到小的话,只要在这里的判断改成if($arr[$j]>$arr[$j-1])就可以了 $tmp=$arr[$j]; $arr[$j]=$arr[$j-1]; $arr[$j-1]=$tmp; } } $arr=array('3','8','1','4','11','7'); print_r(maopao($arr));
快速排序
排序 n 个项目要Ο(n log n)次比较,在最坏状况下则需要Ο(n2)次比较
// 快速排序 function kuaisu($arr){ $len = count($arr); if($len <= 1){ return $arr; } $key = $arr[0]; $left_arr = array(); $right_arr = array(); for($i=1; $i<$len;$i++){ if($arr[$i] <= $key){ $left_arr[] = $arr[$i]; }else{ $right_arr[] = $arr[$i]; } } $left_arr = kuaisu($left_arr); $right_arr = kuaisu($right_arr); return array_merge($left_arr, array($key), $right_arr); } $arr = array(23,98,54,2,9,62,34); print_r(kuaisu($arr));
归并排序和堆排序、快速排序的比较
若从空间复杂度来考虑:首选堆排序,其次是快速排序,最后是归并排序。
若从稳定性来考虑,应选取归并排序,因为堆排序和快速排序都是不稳定的。
若从平均情况下的排序速度考虑,应该选择快速排序。
二维数组排序
1、使用array_multisort();
array_multisort(排序数组字段值的一维数组,待排序二维数组);
2、
<?php function array_sort_by_any_row($array_name, $row_id, $order_type){ $array_temp=array(); foreach($array_name as $key=>$value){ $array_temp[$key]=$value[$row_id]; } if($order_type==="ASC"){ //顺序 asort($array_temp); } else { arsort($array_temp); } $result_array=array(); foreach($array_temp as $key=>$value){ $result_array[$key]=$array_name[$key]; } return $result_array; } $arr = array(array('num'=>5, 'value'=>6), array('num'=>2, 'value'=>39), array('num'=>36, 'value'=>29) ); $sortarr = array_sort_by_any_row($arr, 'num', 'ASC'); print_r($sortarr); ?>
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JavaScript演示排序算法
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- PHP 5.3.0 安装分析心得
- apache 环境下 php 的配置注意事项
- ASP.NET、ASP、PHP、JSP之间有什么区别?
- PHP VBS JS 函数 对照表
- 算法之排序算法的算法思想和使用场景总结