用户名: 密码: 忘记密码? 注册
收藏此问题 发表新评论

PHP算法之快速排序

快速排序原理相对简单,就是递归调用,两个方向排序
用PHP代码实现:
  1. function quick_sort($array) {
  2.         $count = count($array);
  3.         if($count <= 1) {
  4.                 return $array;
  5.         }
  6.         $key = $array[0];
  7.         $left_arr = array();
  8.         $right_arr = array();
  9.         for($i = 1; $i < $count; $i++) {
  10.                 if($array[$i] <= $key) {
  11.                         $left_arr[] = $array[$i];
  12.                 } else {
  13.                         $right_arr[] = $array[$i];
  14.                 }
  15.         }
  16.         $left_arr = quick_sort($left_arr);
  17.         $right_arr = quick_sort($right_arr);
  18.        
  19.         return array_merge($left_arr, $array($key), $right_arr);
  20. }
复制代码
昵称: howk  时间: 2011-06-16 17:43:00
如果用LZ的代码来排序一个有100万个元素的数组会死翘翘
昵称: liexusong  时间: 2011-06-16 19:30:00
递归递死了
昵称: qxhy123  时间: 2011-06-16 20:16:00
递归不是问题,最重要的是内存会爆
昵称: liexusong  时间: 2011-06-16 20:44:00
这快不了吧,貌似那个什么冒泡就要牛X多了...

相对而言,如果数据量太大,一般还得用个什么外部排序之流的算法。呃,这些算法在C中貌似基本上算是必学的吧.
昵称: 游戏人间  时间: 2011-06-16 20:58:00
发表评论
昵称:
内容:
验证: