zoukankan      html  css  js  c++  java
  • 快排

    一趟快速排序的算法是:
    1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;
    2)以第一个数组元素作为关键数据,赋值给key,即key=A[0];
    3)从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值A[j],将A[j]和A[i]互换;
    4)从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的A[i],将A[i]和A[j]互换;
    5)重复第3、4步,直到i=j; (3,4步中,没找到符合条件的值,即3中A[j]不小于key,4中A[i]不大于key的时候改变j、i的值,使得j=j-1,i=i+1,直至找到为止。找到符合条件的值,进行交换的时候i, j指针位置不变。另外,i==j这一过程一定正好是i+或j-完成的时候,此时令循环结束)。
    代码:
     1 <?php
     2     //快排
     3     include "show.php";
     4     
     5     function quick_sort(&$data, $low, $high)
     6     {
     7         if($low < $high)
     8         {
     9             $p = partition($data, $low, $high); 
    10             quick_sort($data, $low, $p);
    11             quick_sort($data, $p+1, $high);
    12         }
    13     }
    14     
    15     function partition(&$data, $low, $high)
    16     {
    17         $key = $data[$low];
    18         while($low<$high)
    19         {
    20             while($low<$high && $data[$high]>$key) $high--;
    21             $data[$low] = $data[$high];
    22             while($low<$high && $data[$low]<$key) $low++;
    23             $data[$high] = $data[$low];
    24         }
    25         $data[$low] = $key;
    26         return $low;
    27     }
    28     
    29     $arr = array(49, 38, 65, 97, 76, 13, 27);
    30     show($arr);//显示数组
    31     quick_sort($arr, 0, count($arr)-1);
    32     show($arr);
    View Code

    结果:

  • 相关阅读:
    alt属性和title属性
    穷人和富人的区别
    JS经典源码:通用JavaScript脚本函数库
    网页弹出框
    男女交往必知15个真理
    alexa排名
    好男人找不到女朋友的根源
    小笑话集(全是经典!)不信你不笑(转)
    送到家服务网2009年3月26日顺利上线了!
    [转]互联网产品开发中的“快”字诀
  • 原文地址:https://www.cnblogs.com/573583868wuy/p/6685743.html
Copyright © 2011-2022 走看看