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 相关文章推荐
一个查看session内容的函数
Oct 09 PHP
基于文本的访客签到簿
Oct 09 PHP
PHP学习之PHP变量
Oct 09 PHP
树型结构列出指定目录里所有文件的PHP类
Oct 09 PHP
PHP中for循环语句的几种变型
Mar 16 PHP
PHP与SQL注入攻击[三]
Apr 17 PHP
初学PHP的朋友 经常问的一些问题。不断更新
Aug 11 PHP
使用array mutisort 实现按某字段对数据排序
Jun 18 PHP
PHP getNamespaces()函数讲解
Feb 03 PHP
laravel返回统一格式错误码问题
Nov 04 PHP
PHP设计模式之适配器模式(Adapter)原理与用法详解
Dec 12 PHP
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
Mar 18 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执行批量mysql语句的解决方法
2013/05/02 PHP
微信access_token的获取开发示例
2015/04/16 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
2019/04/23 PHP
如何在PHP中读写文件
2020/09/07 PHP
EasySlider 基于jQuery功能强大简单易用的滑动门插件
2010/06/11 Javascript
javascript下高性能字符串连接StringBuffer类
2010/08/16 Javascript
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
js实现倒计时时钟的示例代码
2013/12/17 Javascript
JS函数重载的解决方案
2014/05/13 Javascript
简单的jQuery入门指引
2015/07/28 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
js实现简洁的滑动门菜单(选项卡)效果代码
2015/09/04 Javascript
jquery及js实现动态加载js文件的方法
2016/01/21 Javascript
老生常谈遮罩层 滚动条的问题
2016/04/29 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
JS弹出窗口插件zDialog简单用法示例
2016/06/12 Javascript
JavaScript中数组的22种方法必学(推荐)
2016/07/20 Javascript
codeMirror插件使用讲解
2017/01/16 Javascript
hammer.js实现图片手势放大效果
2017/08/29 Javascript
vue实现图书管理demo详解
2017/10/17 Javascript
使用express+multer实现node中的图片上传功能
2018/02/02 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
2018/03/07 Javascript
Vue中computed与methods的区别详解
2018/03/24 Javascript
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
python实现时间o(1)的最小栈的实例代码
2018/07/23 Python
计算机二级python学习教程(2) python语言基本语法元素
2019/05/16 Python
解决django同步数据库的时候app models表没有成功创建的问题
2019/08/09 Python
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
2013/01/31 HTML / CSS
美国求婚钻戒网站:Super Jeweler
2016/08/27 全球购物
一份软件工程师的面试试题
2016/02/01 面试题
优秀共产党员先进事迹材料
2014/05/06 职场文书
责任担保书范文
2014/05/21 职场文书
2015年党风廉政建设工作总结
2015/04/09 职场文书
学困生帮扶工作总结
2015/08/13 职场文书
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android