php算法-php实现快速排序算法
2014-02-22 17:01
399 查看
<?php /* * 快速排序是编程中经常使用到的一种排序方法,作为必须掌握的一种算法,这里将进行php的快速排序实现 * 快速排序的核心思想就是将一个数组中第一项作为中界,所有比这个数大的放在它的右边,小的放在左边 * ,然后对其左边右边递归这个过程。 */ main(); function main() { $arr = array(3, 2, 5, 43, 23, 12, 32, 333, 4, 2, 4, 67, 100, 213); $len = count($arr); quick_sort($arr, $len); print_r($arr); } /* * @description 判断传入数据正确并调用自递归函数_quick_sort * @params &$arr(整型数组引用),$len(数组长度) */ function quick_sort(&$arr, $len) { if (empty($arr) || $len < 1) { return; } _quick_sort($arr, 0, $len - 1); } /* * @description 递归实现快速排序 * @params &$arr(整型数组引用),$start(数组开始索引值),$start(数组结束索引值) */ function _quick_sort(&$arr, $start, $end) { if ($start >= $end) return; $middle = sort_middle($arr, $start, $end); _quick_sort($arr, $start, $middle - 1); //分割线已左的继续进行排序 _quick_sort($arr, $middle + 1, $end); //分割线已右的继续进行排序 } /* * @description 接受整型数组,将所有比数组第一项小的数组放在左边,大的放在右边,最终数组第一项变成一个分割线,大的右边,小的左边 * @params &$arr(整型数组引用),$start(数组开始索引值),$start(数组结束索引值) * @return int 分割数的位置 */ function sort_middle(&$arr, $start, $end) { // $debug=debug_backtrace(); echo "<pre>"; print_r($debug); echo "</pre>"; $loop = $start + 1; $tail = $end - $start; $head = $start; $temp = $arr; $mid = $temp[$start]; while ($loop <= $end) { if ($mid > $temp[$loop]) { $arr[$head] = $temp[$loop]; $head++; } else { $arr[$start + $tail] = $temp[$loop]; $tail--; } $loop++; } $arr[$head] = $mid; return $head; } ?>
相关文章推荐
- 【算法】快速排序算法(递归实现 从小到大排列) 排序范围(0~n-1) n为数组元素个数
- PHP实现插入、选择、冒泡、快速排序算法(转贴)
- PHP 实现多人领奖的简单算法
- [PHP]算法-最长公共子串的PHP实现
- 生长区域算法的php实现
- 敏感词(DFA算法) PHP实现
- PHP实现快速排序算法
- PHP实现各种经典算法详解
- PHP 基础算法实现
- 数据挖掘常用算法及实现(http://bbs.chinakdd.com/forum.php?mod=viewthread&tid=4055&extra=page%3D1)
- PHP实现排序算法----快速排序算法优化
- [PHP]算法-替换空格的PHP实现
- QQ群红包的算法实现探讨(基于PHP demo)
- PHP实现机器学习之朴素贝叶斯算法详解
- 数据结构与算法之递推算法 C++与PHP实现
- PHP实现的装箱算法示例
- PHP实现插入、选择、冒泡、快速排序算法
- PHP微信红包的算法实现探讨
- PHP使用非递归方式实现猴子找大王算法
- PHP-利用二叉堆实现TopK-算法