PHP¿ìËÙÅÅÐòquicksortʵÀýÏê½â

5年以前  |  阅读数:791 次  |  编程语言:PHP 

±¾ÎÄʵÀý½²ÊoÁËPHP¿iËÙÅÅÐoquicksort¡£*ÖÏi¸ø´o¼Ò¹(C)´o¼Ò²Î¿¼£¬¾ßÌaÈçÏ£º

quicksort

ÔÚ¿iËÙÅÅÐoËa¨ÖУ¬Ê¹ÓÃÁËÖÖβßÂÔ¡£Ê×ÏÈ°ÑÐoÁÐÖ³ÉÁ½¸o×ÓÐoÁУ¬µÝ¹eµØ¶Ô×ÓÐoÁнøÐÐÅÅÐo£¬Ö±µ½Õu¸oÐoÁÐÅÅÐo½aÊø¡££¨¼´Ò»ÖΪ¶þµÄ˼Ïe£(C)

²½ÖeÈçÏ£º

ÔÚÐoÁÐÖÐÑ¡ÔñÒ»¸o¹Ø¼uÔªËØ×oΪÖa£»

¶ÔÐoÁнøÐÐÖØÐÂÅÅÐo£¬½«±ÈÖaСµÄÔªËØÒƵ½ÖaµÄÇ°±ß£¬±ÈÖa´oµÄÔªËØÒƶ¯µ½ÖaµÄºoÃae¡£ÔÚ½øÐл®*ÖÖ®ºo£¬Öa±aÔÚËu×iÖÕµÄλÖÃÉÏ£»

µÝ¹eµØ¶ÔÁ½¸o×ÓÐoÁнøÐÐÖØÐÂÅÅÐo£ºº¬ÓнÏСԪËصÄ×ÓÐoÁкͺ¬ÓнϴoÔªËصÄ×ÓÐoÁС£

±ÈÈçÐoÁÐ$arr:

5 3 0 11 44 7 23 2 ½«µÚÒ»¸oÔªËØ$arr[0] = 5 ×÷ΪÖa ÉeÖñe־λ low ¡­ top´u±iÊ×β
2 3 0 11 44 7 23 2 ´ÓÏa´½Ïo£¨ÓÒ£(C)¿ªÊ¼±È½Ï£º2<5 ½«µÚÒ»¸oλÖÃÌae»»Îª2£¬low++
2 3 0 11 44 7 23 11 ´ÓÏa´½Ïo£¨×o£(C)¿ªÊ¼±È½ÏÖ±µ½£º5<11 ½«×iºoÒ»¸oλÖÃÌae»»Îª11,top¨C
Öظ´ÒÔÉϲ½ÖeÖ±µ½ low == top °Ñ¸ÃλÖÃÌae»»ÎªÖaÔªËؼ´5
2 3 0 5 44 7 23 11
ÕaÑu¾Í¿ÉÖΪÁ½²¿Ö2 3 0 Óe 44 23 11
ÕaÑu¾Í¿ÉÒԵóoµÝ¹e¼ÌÐø¿ªÊ¼²½Öe

*Ëa¨ÊµÏÖ£º**


    class quick_sort{
        function quicksort(&$arr,$low,$top){
          if($low < $top){
            $pivotpos = $this->partition($arr,$low,$top);
            $this->quicksort($arr,$low,$pivotpos-1);
            $this->quicksort($arr,$pivotpos+1,$top);
          }
        }
        function partition(&$arr, $low ,$top){
          if($low == $top){
            return;
          }
      //   ÉeÖóoʼÊýÖµ
          $com = $arr[$low];
          while($low!=$top){
      //      ½«±È³oʼÊýֵСµÄÌae»»µ½×o±ß
            while($top&&$top!=$low){
              if($com > $arr[$top]){
              $arr[$low++] = $arr[$top];
              break;
              }else{
                $top--;
              }
            }
      //      ½«±È³oʼÊýÖµ´oµÄÌae»»µ½ÓÒ±ß
            while($low&&$low!=$top){
              if($com < $arr[$low]){
                $arr[$top--] = $arr[$low];
                break;
              }else{
                $low++;
              }
            }
          }
          $arr[$low] = $com;
          return $low;
        }
    }

¸u¶a¹ØÓÚPHPÏa¹ØÄÚÈݸÐÐËȤµÄ¶ÁÕ߿ɲe¿´±¾Õ¾×¨Ìa£º¡¶phpÅÅÐoËa*¨×ܽa¡¡¢¡¶phpÃaeÏo¶ÔÏo³ÌÐoÉe¼ÆÈeÃŽ̡̳¡¢¡¶PHPÊýѧÔËËa¼¼ÇÉ×ܽa¡¡¢¡¶PHPÊý×e(Array)²Ù×÷¼¼ÇÉ´oÈ«¡¡¢¡¶PHPÊý¾Ý½a¹¹ÓeËa*¨½Ì³Ì¡¡¢¡¶[php³ÌÐoÉe¼ÆËa¨×ܽa](http://www.jb51.net/Special/111.htm)¡¡¢¡¶[phpÕýÔo±i´iʽÓè×ܽa](http://www.jb51.net/Special/180.htm)¡¡¢¼°¡¶php³£¼uÊý¾Ý¿a²Ù×÷¼¼ÇÉ»a×Ü¡

Ï£Íu±¾ÎÄËuÊo¶Ô´o¼ÒPHP³ÌÐoÉe¼ÆÓÐËu°iÖu¡£

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例