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 相关文章推荐
PHP 作用域解析运算符(::)
Jul 27 PHP
PHP开发规范手册之PHP代码规范详解
Jan 13 PHP
web server使用php生成web页面的三种方法总结
Oct 28 PHP
linux实现php定时执行cron任务详解
Dec 24 PHP
php查看当前Session的ID实例
Mar 16 PHP
php实现判断访问来路是否为搜索引擎机器人的方法
Apr 15 PHP
PHP图像处理类库MagickWand用法实例分析
May 21 PHP
举例讲解PHP面对对象编程的多态
Aug 12 PHP
php简单处理XML数据的方法示例
May 19 PHP
Laravel中Facade的加载过程与原理详解
Sep 22 PHP
PHP实现通过二维数组键值获取一维键名操作示例
Oct 11 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
Feb 10 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插件 HTMLPurifier HTML解析器
2013/07/01 PHP
PHP取整函数:ceil,floor,round,intval的区别详细解析
2013/08/31 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
PHP实现的简单缓存类
2015/07/29 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
2015/12/18 PHP
LazyLoad 延迟加载(按需加载)
2010/05/31 Javascript
js对数字的格式化使用说明
2011/01/12 Javascript
Javascript的常规数组和关联数组对比小结
2012/05/24 Javascript
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
JavaScript动态创建link标签到head里的方法
2014/12/22 Javascript
js设置document.domain实现跨域的注意点分析
2015/05/21 Javascript
Bootstrap table分页问题汇总
2016/05/30 Javascript
[原创]JavaScript语法高亮插件highlight.js用法详解【附highlight.js本站下载】
2016/11/01 Javascript
jquery easyui validatebox remote的使用详解
2016/11/09 Javascript
Javascript防止图片拉伸的自适应处理方法
2017/12/26 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
[02:40]2014DOTA2 国际邀请赛中国区预选赛 四大豪门抵达华西村
2014/05/23 DOTA
python获取本地计算机名字的方法
2015/04/29 Python
Python selenium如何设置等待时间
2016/09/15 Python
python+unittest+requests实现接口自动化的方法
2018/11/29 Python
pthon贪吃蛇游戏详细代码
2019/01/27 Python
解决pytorch 交叉熵损失输出为负数的问题
2020/07/07 Python
thinkphp5 路由分发原理
2021/03/18 PHP
使用纯HTML5编写一款网页上的时钟的代码分享
2015/11/16 HTML / CSS
.net C#面试题
2012/08/28 面试题
如何反序的迭代一个序列?how do I iterate over a sequence in reverse order
2012/02/04 面试题
小学教师国培感言
2014/02/08 职场文书
《小石潭记》教学反思
2014/02/13 职场文书
年终晚会主持词
2014/03/25 职场文书
大学奖学金获奖感言
2014/08/15 职场文书
网球场地租赁协议范本
2014/10/07 职场文书
婚庆答谢词
2015/01/04 职场文书
工作简报范文
2015/07/21 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书
SpringBoot SpringEL表达式的使用
2021/07/25 Java/Android
CentOS7和8下安装Maven3.8.4
2022/04/07 Servers