起因
好吧,我承认最近我跟快速排序干上了,各种测试编写快速排序程序,现在就用php实现快速排序,跟之前文章不同,这次php的快排是能解决实际需要的。
使用环境和条件
有这样一种情况,php里面的关联数组,如果下面这样的数组数据:
$array = array ( array ( 'name' => "xiao", 'age' => 3 ), array ( 'name' => 'wang', 'age' => 1 ), array ( 'name' => 'chen', 'age' => 2 ) );
我们要对数组针对age字段进行排序,php自带的函数,无论是那种sort,显然都不能满足我们的需求,因此我们可以自己写一个快速排序代码,很快的实现我们的要求
注意情况
php里面是没有指针存在的,所以当想要引用传递的时候,我们不能跟C代码一样,直接这样写quicksort(int *A, int begin, int end),而是要使用php的&运算符,将数组的地址传递跟快速排序函数,这样就能在php里实现引用传递而不是值传递
快速排序代码
QuickSortProcess ( $array, 0, count ( $array ) - 1 ); print_r ( $array ); /** * Description:快速排序中获取中枢点的位置 */ function QuickPartition(&$array, $left, $right) { // 1.基准定义 $stand = $array [$left]; // 2.从区间两端向中间扫描,直到$left == $right为止 while ( $left < $right ) { while ( $left < $right && $array [$right] ['age'] >= $stand ['age'] ) { $right --; } if ($left < $right) { $array [$left ++] = $array [$right]; } while ( $left < $right && $array [$left] ['age'] <= $stand ['age'] ) { $left ++; } if ($left < $right) { $array [$right --] = $array [$left]; } } // 3.获取中枢点位置 $array [$left] = $stand; return $left; } /** * Description:快速排序主流程函数 */ function QuickSortProcess(&$array, $begin, $end) { // 1.变量定义 $pivot = NULL; // 中枢点 if ($begin < $end) { $pivot = QuickPartition ( $array, $begin, $end ); QuickSortProcess ( $array, $begin, $pivot - 1 ); QuickSortProcess ( $array, $pivot + 1, $end ); } }
我在项目上就用到了这个快速排序,挺开心的,不枉这个10月1假期花了N天AC快速排序的c代码
- 1楼dickeylth昨天 14:30
- 这种问题可以查阅下php中的usort,写自定义的排序回调函数就行了。参见:http://www.php.net/manual/zh/function.usort.php
- Re: zinss26914昨天 15:27
- 回复dickeylthn查了一下您给的链接,确实是这样,可以省不少代码量,多谢多谢,哈哈,其实也想在实际项目里用下自己写的排序算法,总是调用php的自带函数,感觉自己都快不会写程序了
![PHP编程就业班](http://m.sbmmt.com/img/upload/course/000/000/071/621c25bbac2ca351.png)
相关文章推荐
• 请教各位测试这段代码的结果是什么• file_get_contents函数可否不报错 • PHP Session变量不能传送来下一页 • 对编译原理有兴趣的进,该怎么处理 • .htaccess的有关问题jquery 基础视频教程
jQuery 很容易学习,希望通过我们的《jquery 基础视频教程》可以帮助大家来更好的学习jQuery。 jQuery 是一个 JavaScript 库,简化了 JavaScript 编程。
jQuery教程51525次播放
javascript三级联动视频教程
《javascript三级联动视频教程》介绍了javascript开发的三级联动功能,该功能在日常使用中还是经常能用的到的一个。
JavaScript教程30610次播放
独孤九贱(3)_JavaScript视频教程
javascript是运行在浏览器上的脚本语言,连续多年,被评为全球最受欢迎的编程语言。是前端开发必备三大法器中,最具杀伤力。如果前端开发是降龙十八掌,好么javascript就是第18掌:亢龙有悔。没有它,你的前端生涯是不完整的。《php.cn独孤九贱(3)-JavaScript视频教程》课程特色:php中文网原创幽默段子系列课程,以恶搞,段子为主题风格的php视频教程!轻松的教学风格,简短的教学模式,让同学们在不知不觉中,学会了javascript知识。
JavaScript教程120461次播放
独孤九贱(6)_jQuery视频教程
jQuery是一个快速、简洁的JavaScript框架。设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。 核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的css选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。兼容各种主流浏览器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等,是全球最流行的前端开发框架之一。PHP中文网根据最新版本,独家录制jQuery最新视频教程,回馈PHP中文网的新老用户。
jQuery教程99671次播放