php排序算法(冒泡排序,快速排序)


Posted in PHP onOctober 09, 2012

冒泡排序实现原理

① 首先将所有待排序的数字放入工作列表中。
② 从列表的第一个数字到倒数第二个数字,逐个检查:若某一位上的数字大于他的下一位,则将它与它的下一位交换。

③ 重复步骤②,直至再也不能交换。

代码实现

<?php
 function bubbingSort(array $array)
 {
     for($i=0, $len=count($array)-1; $i<$len; ++$i)
     {
         for($j=$len; $j>$i; --$j)
         {
             if($array[$j] < $array[$j-1])
             {
                 $temp = $array[$j];
                 $array[$j] = $array[$j-1];
                 $array[$j-1] = $temp;
             }
         }
     }
     return $array;
 } print '<pre>';
 print_r(bubbingSort(array(1,4,22,5,7,6,9)));
 print '</pre>';

快速排序实现原理
采用分治的思想:先保证列表的前半部分都小于后半部分,然后分别对前半部分和后半部分排序,这样整个列表就有序了。

代码实现

function quickSort(array $array)
 {
     $len = count($array);
     if($len <= 1)
     {
         return $array;
     }
     $key = $array[0];
     $left = array();
     $right = array();
     for($i=1; $i<$len; ++$i)
     {
         if($array[$i] < $key)
         {
             $left[] = $array[$i];
         }
         else
         {
             $right[] = $array[$i];
         }
     }
     $left = quickSort($left);
     $right = quickSort($right);
     return array_merge($left, array($key), $right);
 } print '<pre>';
 print_r(quickSort(array(1,4,22,5,7,6,9)));
 print '</pre>';
PHP 相关文章推荐
编写漂亮的代码 - 将后台程序与前端程序分开
Apr 23 PHP
php学习笔记(三)操作符与控制结构
Aug 06 PHP
php缓存技术详细总结
Aug 07 PHP
PHP读取RSS(Feed)简单实例
Jun 12 PHP
php中unserialize返回false的解决方法
Sep 22 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
Mar 25 PHP
功能强大的php分页函数
Jul 20 PHP
php合并数组并保留键值的实现方法
Mar 12 PHP
PHP使用CURL实现下载文件功能示例
Jun 03 PHP
PHP抽象类和接口用法实例详解
Jul 20 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
Feb 27 PHP
PHP 实现 JSON 数据的编码和解码操作详解
Apr 22 PHP
php全排列递归算法代码
Oct 09 #PHP
php列出一个目录下的所有文件的代码
Oct 09 #PHP
解析百度搜索结果link?url=参数分析 (全)
Oct 09 #PHP
仿Aspnetpager的一个PHP分页类代码 附源码下载
Oct 08 #PHP
php随机输出名人名言的代码
Oct 07 #PHP
PHP面向对象学习笔记之二 生成对象的设计模式
Oct 06 #PHP
PHP面向对象学习笔记之一 基础概念
Oct 06 #PHP
You might like
树型结构列出指定目录里所有文件的PHP类
2006/10/09 PHP
第十一节--重载
2006/11/16 PHP
php中定时计划任务的实现原理
2013/01/08 PHP
php中如何判断一个网页请求是ajax请求还是普通请求
2013/08/10 PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
2014/06/19 PHP
PHP图片处理之图片背景、画布操作
2014/11/19 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
2017/08/10 PHP
one.php 多项目、函数库、类库 统一为一个版本的方法
2020/08/24 PHP
jquery图片播放浏览插件prettyPhoto使用详解
2014/12/19 Javascript
JavaScript中创建字典对象(dictionary)实例
2015/03/31 Javascript
jQuery实现表格行上下移动和置顶效果
2015/06/05 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
Nodejs抓取html页面内容(推荐)
2016/08/11 NodeJs
浅析Javascript ES6新增值比较函数Object.is
2016/08/24 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
jQuery实现删除li节点的方法
2016/12/06 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
Vue.js watch监视属性知识点总结
2019/11/11 Javascript
Vue elementui字体图标显示问题解决方案
2020/08/18 Javascript
基于element-ui对话框el-dialog初始化的校验问题解决
2020/09/11 Javascript
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
2018/03/23 Python
django-filter和普通查询的例子
2019/08/12 Python
python jenkins 打包构建代码的示例代码
2019/11/29 Python
Pycharm小白级简单使用教程
2020/01/08 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
2020/04/16 Python
jupyter notebook运行命令显示[*](解决办法)
2020/05/18 Python
纯css3实现的鼠标悬停动画按钮
2014/12/23 HTML / CSS
联想马亚西亚官方网站:Lenovo Malaysia
2018/09/19 全球购物
公司员工的自我评价范例
2013/11/01 职场文书
兼职业务员岗位职责
2014/01/01 职场文书
公司年底活动方案
2014/08/17 职场文书
四风查摆问题及整改措施
2014/10/10 职场文书
2016最新离婚协议书范本及程序
2016/03/18 职场文书